Recentemente, comecei a usar o Web Assembly para alguns dos meus projetos. Estou fazendo isso porque ouvi dizer que o wasm é mais rápido que o javascript.
O WebAssembly é mais rápido que o JavaScript, mas apenas para certos casos de uso. Com o WebAssembly, seu navegador precisa fazer menos trabalho para baixar e compilar seu código, proporcionando tempos de inicialização mais rápidos. No entanto, quando o desempenho em tempo de execução do WebAssembly normalmente é apenas 2 a 3 vezes mais rápido que o JavaScript. Veja o artigo a seguir para uma comparação muito boa e prática:
https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/
No entanto, o WebAssembly não tem acesso DOM direto; portanto, apesar de seu desempenho superior, você pode achar que é mais lento que o JavaScript para o seu caso de uso devido à sobrecarga extra de E / S.
Por esse motivo, atualmente as pessoas estão obtendo mais sucesso com o WebAssembly para tarefas intensivas em algoritmos / computação.
eu percebi que eu não sabia como manipular o dom em c ++. Existe alguma maneira de fazer isso usando wasm?
Para manipular o DOM, você deve fazer isso através do host JavaScript - seu módulo WebAssembly precisa enviar mensagens para o JavaScript 'pedindo' para manipular o DOM em seu nome.
Como esse é um desafio bastante comum, existem vários projetos comunitários que têm soluções para o problema. Como você está usando C ++, este pode ser do seu interesse:
https://github.com/mbasso/asm-dom
No futuro, isso ficará mais fácil, propostas como Tipos de Interface estão facilitando a interoperabilidade com o ambiente host e podem permitir que APIs da Web sejam chamadas diretamente do WebAssembly.