Комментарии 6
Труд титанический, результат ожидаемый. Занимался подобным по-лёгкому, пришёл к тому, что
JavaScript без указания деталей - профанация, в Сафари одно, в Огнелисе другое.
JavaScript и так быстрый, сильно ускорить его невозможно. Даже на десктопе.
Если уж ускорять, то на С, а не на Dart, и даже не на С++, и уж тем более не на Go.
Выходит, WebAssembly - это для переноса кодовой базы, якобы "надёжности" типа Rust, обфускации, кроссплатформы десктопа и браузера может быть, ещё придумать чего, а для скорости - в последнюю очередь.
Я бы сказал так - всё зависит от кейсов, в веб приложении, в некоторых кейсах однозначно WASM бьёт, но это узкие направления.
И, думаю, WASM на dart и WASM на C - это один и тот же WASM, т е профита не даст, но хорошо бы это проверить.
А насчёт надёжности, вряд-ли типа Rust, скорее стабильность кадров отрисовки в WASM лучше, т е именно производительность на один кадр, но не думаю, что он очень безопасный по памяти как Rust, хотя можно писать через Rust-Dart bridge или напрямую Rust->WASM.
Ну, и если сравнить вес бандла esm и wasm, то тоже не сильно в пользу последнего.
Работа проделана огромная, вопрос лишь в том, насколько она релевантна поставленной задаче. Подавляющее большинство тестов относится к серверным задачам, при чём тут клиентские веб страницы, не совсем понятно.
P.S.
В (46) для всех сборок указан одинаковый результат 0.014, при этом утверждается, что WASM в 13.07 раза быстрее.
Работа проделана огромная, вопрос лишь в том, насколько она релевантна поставленной задаче. Подавляющее большинство тестов относится к серверным задачам, при чём тут клиентские веб страницы, не совсем понятно.
Работа была интересна мне лично для понятия двух кейсов:
1) имеет ли смысл полностью переходить на WASM
2) в приложениях какого типа лучше использовать компиляцию под WASM, и где лучше оставить всё на JS - это главная причина.
По поводу того что большинство задач серверные - не соглашусь, вычисления - они везде вычисления, за время развития веба грань между клиентскими и серверными вычислениями извивается как змея.
В (46) для всех сборок указан одинаковый результат 0.014, при этом утверждается, что WASM в 13.07 раза быстрее.
Спасибо за внимательное прочтение! В тесте 46 вычисления во всех трёх столбцах выполнял один и тот же Wasm-модуль. Менялась сборка Flutter, которая его вызывала:
Flutter, собранный в JavaScript → вызывает Wasm-модуль → около 0,014 мс.
Flutter, собранный в Wasm ST → вызывает тот же модуль → около 0,014 мс.
Flutter, собранный в Wasm MT → вызывает тот же модуль → около 0,014 мс.
В тесте 45 все три сборки Flutter — JavaScript, Wasm ST и Wasm MT — вызывают одну и ту же JavaScript-функцию с BigInt.
Ускорение 13,07 раза относится к сравнению тестов 45 (JavaScript-функция с BigInt) и 46 (Wasm-функция с i64). И кстати, 13,07 - это медиана
Спасибо. Ваша затраченное время - это экономия времени на постановках задач

WASM vs JavaScript 2026 — проверка на Flutter Web