Ich habe kürzlich begonnen, Web Assembly für einige meiner Projekte zu verwenden. Ich mache das, weil ich gehört habe, dass wasm schneller ist als Javascript.
WebAssembly ist schneller als JavaScript, jedoch nur für bestimmte Anwendungsfälle. Mit WebAssembly muss Ihr Browser weniger Arbeit leisten, um Ihren Code herunterzuladen und zu kompilieren, was die Startzeiten verkürzt. Wenn die Laufzeitleistung von WebAssembly jedoch normalerweise nur zwei- bis dreimal schneller ist als die von JavaScript. Im folgenden Artikel finden Sie einen sehr guten und praktischen Vergleich:
https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/
WebAssembly hat jedoch keinen direkten DOM-Zugriff. Trotz seiner überlegenen Leistung stellen Sie möglicherweise fest, dass es aufgrund des zusätzlichen E / A-Overheads für Ihren Anwendungsfall langsamer als JavaScript ist.
Aus diesem Grund sind WebAssembly derzeit am erfolgreichsten für algorithmische / rechenintensive Aufgaben.
Ich erkannte, dass ich nicht wusste, wie man den Dom in C ++ manipuliert. Gibt es eine Möglichkeit, dies mit wasm zu tun?
Um das DOM zu manipulieren, müssen Sie dies über den JavaScript-Host tun. Ihr WebAssembly-Modul muss Nachrichten an JavaScript senden und es bitten, das DOM in seinem Namen zu manipulieren.
Da dies eine weit verbreitete Herausforderung ist, gibt es verschiedene Community-Projekte, die Lösungen für das Problem bieten. Wenn Sie C ++ verwenden, könnte dieses für Sie von Interesse sein:
https://github.com/mbasso/asm-dom
In Zukunft wird dies einfacher. Vorschläge wie Schnittstellentypen erleichtern die Interaktion mit der Hostumgebung und können den direkten Aufruf von Web-APIs über WebAssembly ermöglichen.