Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

WebAssembly vs JavaScript: qual è il più performante?

Un confronto tra WebAssembly e JavaScript per capire quali dei due offre le prestazioni più elevate.
WebAssembly vs JavaScript: qual è il più performante?
Un confronto tra WebAssembly e JavaScript per capire quali dei due offre le prestazioni più elevate.
Link copiato negli appunti

Javascript è attualmente il linguaggio più diffuso tra gli sviluppatori. Questo perché offre versatilità e prestazioni in una vasta gamma di applicazioni e contesti. Inoltre, con il diffondersi delle soluzioni Cloud, il mondo dello sviluppo si è spostato in buona parte su Web application e hybrid App e, di conseguenza, su linguaggi come Javascript. Attualmente esiste però un consorzio formato da aziende e fondazioni che punta su una nuova tecnologia complementare, se non addirittura sostitutiva, a Javascript: WebAssembly.

WebAssembly è un progetto lanciato nel corso del 2015 da Mozilla, Google e Microsoft. Si tratta di un linguaggio di programmazione a basso livello per l'in-browser client-side scripting che, avendo successo, potrebbe diventare il nuovo formato cross-browser per il web, concorrendo direttamente con Javascript anche se tra i due linguaggi esistono differenze significative.

In particolare Mozilla sta investendo ingenti risorse sul supporto nativo a WebAssembly, arrivato con Firefox 52, e sta sviluppando un IDE dedicato chiamato WebAssembly Explorer.

Secondo diversi sviluppatori WebAssembly offre la possibilità di ottimizzare il codice in modo più avanzato rispetto a Javascript. Quindi WebAssembly offre maggiori prestazioni rispetto a Javascript? Per rispondere correttamente a tale domanda dobbiamo capire a pieno le differenze tra i due linguaggi.

JavaScript è un linguaggio di scripting orientato agli oggetti e agli eventi, oltre che per i siti Web viene impiegato per realizzare Web App che usiamo quotidianamente tramite l'ausilio di vari framework di sviluppo come NodeJS o asmJS. Tramite Javascript è possibile ottenere degli effetti dinamici interattivi, questo grazie alle funzioni invocate da eventi innescati a loro volta dall'utente.

WebAssembly è uno standard Web che definisce un formato binario e un corrispondente formato testuale per la scrittura di codice eseguibile nelle pagine Web. Ha lo scopo di abilitare l'esecuzione del codice quasi alla stessa velocità con cui esegue il codice macchina nativo. È stato progettato come integrazione di JavaScript, cosi da accelerare le prestazioni delle parti critiche delle applicazioni Web, e in seguito per consentire lo sviluppo in altri linguaggi. WebAssembly riesce a velocizzare le operazioni in modo ottimale perché è stato pensato per creare dei pacchetti facili da scaricare e dunque più rapidi da leggere durante il parsing. Inoltre supporta molto meglio l’architettura multicore dei moderni PC ed è possibile eseguire più parsing in parallelo.

Nel corso del 2017 WebAssembly è finalmente arrivato su tutti i principali browser presenti sul mercato. Senza contare che la sua compilation toolchain è maturata notevolmente ed è stata integrata anche in diversi Web development tool standard, come ad esempio WebPack. E'poi possibile scrivere codice con il linguaggio che si preferisce e poi compilarlo in WebAssembly.

Questo è sicuramente un'aspetto molto interessante, sopratutto per coloro che hanno già scritto codice e puntano principalmente ad un porting su piattaforma Web. Ma chi deve partire da zero sarà portato probabilmente ad indirizzarsi verso Javascript, questo perché è molto più semplice reperire sviluppatori Javascript sul mercato, oltre ovviamente alla disponibilità in Rete di una moltitudine di framework Javascript con funzioni già pronte.

Ci sono quindi una serie di considerazioni da fare. In alcuni casi i file di WebAssembly sono più pesanti, dunque se si lavora con connessioni lente è probabile che uno script Javascript riesca ad avviarsi più rapidamente di uno in WebAssembly. Anche se per i progetti su larga scala la questione potrebbe essere diversa.

I file di WebAssembly vengono caricati nella cache del browser e più velocemente del corrispondente codice JavaScript, ma la differenza in termini di prestazioni risulta essere abbastanza sottile in diverse configurazioni hardware, anche se WebAssembly ha sempre la meglio. Pertanto, se si utilizza spesso la stessa applicazione, o se la Web App si trova in locale, il binario WebAssembly verrà si avviato più rapidamente, ma in certi contesti il guadagno prestazionale sarà minimo o trascurabile.

Altro fattore da non trascurare è il supporto da parte dei browser Web, attualmente in testa ci sono Chrome e Firefox ma altri browser come Edge o Safari non offrono le medesime prestazioni con WebAssembly. Questo è un fattore determinante quando si sceglie di sviluppare un'applicazione o un servizio che deve essere rivolto a quanti più utenti possibili, indifferentemente dalla piattaforma o dal browser di riferimento.

In tali contesti Javascript prevale rispetto a WebAssembly perché gode di un supporto notevolmente migliore. Al contrario WebAssembly potrebbe essere una scelta convincente se invece si ha già un videogame in C++, o magari in un altro linguaggio nativo, che si deve portare su piattaforma Web.

Quindi volendo rispondere alla nostra domanda iniziale: WebAssembly in linea di massima offre migliori performance rispetto a Javascript, tuttavia a seconda del contesto il gioco non vale la candela. Infatti per quanto riguarda il gaming e i porting di applicazioni native in generale WebAssembly rappresenta sicuramente la migliore alternativa. Mentre per tutti gli altri campi Javascript resta tutt'oggi un'ottima scelta che non ha nulla da invidiare a WebAssembly in quanto a performance.

Via limere.me

Ti consigliamo anche