Ostatnio zacząłem używać Websemblera do niektórych moich projektów. Robię to, ponieważ słyszałem, że wasm jest szybszy niż javascript.
WebAssembly jest szybszy niż JavaScript, ale tylko w niektórych przypadkach użycia. Dzięki WebAssembly Twoja przeglądarka musi wykonać mniej pracy, aby pobrać i skompilować kod, co skraca czas uruchamiania. Jednak gdy wydajność środowiska wykonawczego WebAssembly jest zazwyczaj tylko 2-3 razy szybsza niż JavaScript. Zobacz bardzo dobry i praktyczny porównanie w następującym artykule:
https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/
Jednak WebAssembly nie ma bezpośredniego dostępu do DOM, więc pomimo jego doskonałej wydajności może się okazać, że jest wolniejszy niż JavaScript w twoim przypadku użycia z powodu dodatkowego obciążenia We / Wy.
Z tego powodu obecnie ludzie odnajdują największy sukces dzięki WebAssembly w zadaniach intensywnie korzystających z algorytmów / obliczeń.
zdałem sobie sprawę, że nie wiem, jak manipulować domem w c ++. Czy można to zrobić za pomocą wasm?
Aby manipulować DOM, musisz to zrobić za pośrednictwem hosta JavaScript - moduł WebAssembly musi wysyłać wiadomości do JavaScript, „prosząc” go o manipulowanie DOM w jego imieniu.
Ponieważ jest to dość powszechne wyzwanie, istnieje wiele projektów społecznościowych, które mają rozwiązania tego problemu. Gdy używasz C ++, ten może Cię zainteresować:
https://github.com/mbasso/asm-dom
W przyszłości będzie to łatwiejsze, propozycje takie jak Typy interfejsów ułatwiają interakcję ze środowiskiem hosta i mogą umożliwiać wywoływanie interfejsów API sieci Web bezpośrednio z WebAssembly.