Обновить

Комментарии 6

Труд титанический, результат ожидаемый. Занимался подобным по-лёгкому, пришёл к тому, что

  • JavaScript без указания деталей - профанация, в Сафари одно, в Огнелисе другое.

  • JavaScript и так быстрый, сильно ускорить его невозможно. Даже на десктопе.

  • Если уж ускорять, то на С, а не на Dart, и даже не на С++, и уж тем более не на Go.

  • Выходит, WebAssembly - это для переноса кодовой базы, якобы "надёжности" типа Rust, обфускации, кроссплатформы десктопа и браузера может быть, ещё придумать чего, а для скорости - в последнюю очередь.

Я бы сказал так - всё зависит от кейсов, в веб приложении, в некоторых кейсах однозначно WASM бьёт, но это узкие направления.

И, думаю, WASM на dart и WASM на C - это один и тот же WASM, т е профита не даст, но хорошо бы это проверить.

А насчёт надёжности, вряд-ли типа Rust, скорее стабильность кадров отрисовки в WASM лучше, т е именно производительность на один кадр, но не думаю, что он очень безопасный по памяти как Rust, хотя можно писать через Rust-Dart bridge или напрямую Rust->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 - это медиана

Спасибо. Ваша затраченное время - это экономия времени на постановках задач

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации