Recientemente comencé a usar Web Assembly para algunos de mis proyectos. Estoy haciendo esto porque escuché que wasm es más rápido que javascript.
WebAssembly es más rápido que JavaScript, pero solo para ciertos casos de uso. Con WebAssembly, su navegador tiene que hacer menos trabajo para descargar y compilar su código, lo que le brinda tiempos de inicio más rápidos. Sin embargo, cuando el rendimiento en tiempo de ejecución de WebAssembly es típicamente solo 2 a 3 veces más rápido que JavaScript. Vea el siguiente artículo para una comparación muy buena y práctica:
https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/
Sin embargo, WebAssembly no tiene acceso DOM directo, por lo que, a pesar de su rendimiento superior, es posible que sea más lento que JavaScript para su caso de uso debido a la sobrecarga de E / S adicional.
Por esta razón, actualmente las personas están teniendo más éxito con WebAssembly para tareas algorítmicas / computacionales intensivas.
Me di cuenta de que no sabía cómo manipular el dom en c ++. ¿Hay alguna manera de hacer esto usando wasm?
Para manipular el DOM, debe hacerlo a través del host de JavaScript: su módulo WebAssembly tiene que enviar mensajes a JavaScript 'pidiéndole' que manipule el DOM en su nombre.
Como este es un desafío bastante común, hay varios proyectos comunitarios que tienen soluciones al problema. Como está utilizando C ++, este podría ser de su interés:
https://github.com/mbasso/asm-dom
En el futuro, esto será más fácil, las propuestas como Tipos de interfaz están facilitando la interoperabilidad con el entorno host y podrían permitir que las API web se llamen directamente desde WebAssembly.