Должен ли Flutter web использовать Wasm вместо dart2js? - PullRequest
0 голосов
/ 22 сентября 2019

Я заметил несколько статей о том, что Wasm работает быстрее, чем JS [1 , 2 ]

Я вижу, что тема была затронута в старых (закрытых) выпусках [3 , 4 ]

и это, казалось бы, заброшенное обсуждение в группах Google [5] ;

вопрос:

почему трепетная паутина не использует Wasm вместо dart2js ?

спасибо за ваше время

(спрашивается также на github)

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Во время последнего AMA Flutter Team на Reddit член команды Flutter Тодд Волкерт сказал:

WebAssembly - это то, что мы сейчас оцениваем, чтобы увидеть, какие существуют возможности для его интеграции с Flutter.Ничего конкретного в данный момент не сообщается.

Источник

1 голос
/ 22 сентября 2019

Вячеслав Егоров (ведущий Dart AOT & JIT в Google) объясняет в этом комментарии к Github , что совершенно не ясно, что WASM - лучшая цель компиляции, чем JS.

Несомненно, что WASM является лучшей целью компиляции, чем JS для языков, таких как C / C ++ и Rust - языков, где вы управляете своей памятью вручную, где ваши вызовы чаще всего статически отправляются, а примитивные типыunboxed.

Однако если вы начнете переходить от языков такого типа к таким языкам, как Dart - которые полны динамического поведения, коробочных примитивных типов и GC, вы обнаружите, что с абсолютной уверенностью утверждать, что WASM является более трудным утверждением, становится все труднее.лучшая цель компиляции, чем JS - потому что вы будете вынуждены скомпилировать различные компоненты времени выполнения (например, реализацию диспетчеризации методов) в WASM - в то время как в JS вы получаете эти вещи из базовой среды выполнения JS, и они реализованы изначально и сильно оптимизированы.

Другой вИнтересно отметить, что dart2js по существу извлекает выгоду из двух этапов компиляции - компиляции AOT в JS и динамической оптимизации этого JS позже JS JIT.Если компилятору AOT не удается статически специализировать какой-либо сайт вызовов, все еще есть вероятность, что JS VM справится с этим.Вы не получаете такой роскоши с WASM.

Есть много других факторов, которые следует учитывать (например, встроенные библиотеки - хотите ли вы реализовать свой собственный массив, такой как структура, в WASM со снижением производительности или выпросто хотите использовать сильно оптимизированный собственный массив?) и т. д., и т. д.

Тем не менее, я не сомневаюсь, что есть рабочие нагрузки и программы, которые выиграли бы от Dart, нацеленного на WASM.Все, что я хочу сказать, это то, что ожидать, что все программы Dart будут магически быстрее, неверно.

...