Нещодавно я почав використовувати веб-збори для деяких своїх проектів. Я роблю це, тому що я чув, що wasm швидше, ніж JavaScript.
Веб-збирання швидше, ніж JavaScript, але лише для певних випадків використання. За допомогою WebAssembly вашому браузеру доводиться робити менше роботи для завантаження та компіляції вашого коду, що забезпечує швидший час запуску. Однак, коли виконання WebAssembly виконує, як правило, лише в 2 - 3 рази швидше, ніж JavaScript. Дивіться наступну статтю щодо дуже хорошого та практичного порівняння:
https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/
Однак WebAssembly не має прямого доступу до DOM, тому, незважаючи на свою покращену ефективність, ви можете виявити, що він працює повільніше, ніж JavaScript для вашого випадку використання через додаткові накладні витрати вводу / виводу.
З цієї причини в даний час люди досягають найбільшого успіху в WebAssembly для виконання алгоритмічних / обчислювальних завдань.
Я зрозумів, що я не знав, як маніпулювати домом у С ++. Чи можна це зробити за допомогою wasm?
Для того, щоб маніпулювати DOM, вам потрібно зробити це через хост JavaScript - ваш модуль WebAssembly повинен надсилати повідомлення в JavaScript, "просити" його маніпулювати DOM від свого імені.
Оскільки це досить поширений виклик, існують різні громадські проекти, які мають вирішення проблеми. Оскільки ви користуєтесь C ++, цей варіант може вас зацікавити:
https://github.com/mbasso/asm-dom
Надалі це стане простішим, такі пропозиції, як типи інтерфейсу , спрощують взаємодію з хост-середовищем і можуть дозволити виклику веб-API безпосередньо з WebAssembly.