Di recente ho iniziato a utilizzare Web Assembly per alcuni dei miei progetti. Lo sto facendo perché ho sentito che wasm è più veloce di javascript.
WebAssembly è più veloce di JavaScript, ma solo per alcuni casi d'uso. Con WebAssembly il tuo browser deve fare meno lavoro per scaricare e compilare il codice, garantendo tempi di avvio più rapidi. Tuttavia, quando le prestazioni di runtime di WebAssembly sono in genere solo 2-3 volte più veloci di JavaScript. Vedi il seguente articolo per un confronto molto buono e pratico:
https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/
Tuttavia, WebAssembly non ha accesso diretto al DOM, quindi nonostante le sue prestazioni superiori, potresti scoprire che è più lento di JavaScript per il tuo caso d'uso a causa di un sovraccarico di I / O aggiuntivo.
Per questo motivo, attualmente le persone stanno riscontrando il maggior successo con WebAssembly per attività ad alta intensità di algoritmo / calcolo.
mi sono reso conto che non sapevo come manipolare il dom in c ++. C'è un modo per farlo usando wasm?
Per manipolare il DOM devi farlo tramite l'host JavaScript: il tuo modulo WebAssembly deve inviare messaggi a JavaScript "chiedendogli" di manipolare il DOM per suo conto.
Poiché questa è una sfida piuttosto comune, ci sono vari progetti di comunità che hanno soluzioni al problema. Dato che stai usando C ++, questo potrebbe interessarti:
https://github.com/mbasso/asm-dom
In futuro, ciò sarà più facile, proposte come Tipi di interfaccia stanno rendendo più semplice l'interoperabilità con l'ambiente host e potrebbero consentire alle API Web di essere chiamate direttamente da WebAssembly.