簡體   English   中英

Flutter web 是否應該使用 Wasm 而不是 dart2js

[英]Should Flutter web use Wasm instead of dart2js

我發現了幾篇關於 Wasm 比 JS 更快的文章[1 , 2 ]

我看到這個話題已經在這個舊的(已關閉的)問題中被觸及[3 , 4 ]

而這個看似被放棄的關於谷歌群組的討論[5]

問題是:

為什么 flutter web 不使用 Wasm 而不是 dart2js

感謝您的時間

(也在github上詢問)

Vyacheslav Egorov (在 Google 領導 Dart AOT 和 JIT)在對 Github 的評論中解釋說,這根本不清楚 WASM 是比 JS 更好的編譯目標。

毫無疑問,對於 C/C++ 和 Rust 等語言,WASM 是比 JS 更好的編譯目標 - 您手動管理 memory 的語言,您的調用通常是靜態分派的,原始類型是拆箱的。

然而,如果你開始從這種語言轉向像 Dart 這樣的語言——它們充滿了動態行為、盒裝原始類型和 GC,你會發現很難絕對肯定地聲稱 WASM 是比 JS 更好的編譯目標——因為您將被迫將各種運行時組件(例如方法分派實現)編譯到 WASM 中——而在 JS 中,您從底層 JS 運行時獲取這些東西,它們是本機實現並經過大量優化的。

另一個要考慮的有趣的事情是,dart2js 本質上受益於兩個編譯步驟——AOT 編譯到 JS 和稍后通過 JS JIT 動態優化這個 JS。 如果 AOT 編譯器無法靜態特化某些調用站點,JS VM 仍有機會設法做到這一點。 WASM 不會讓您如此奢侈。

還有很多其他因素需要考慮(例如,內置庫 - 您是想在 WASM 中實現自己的類似數組的結構並帶來相關的性能損失,還是只想使用高度優化的本機數組?)等等。

話雖如此 - 我不懷疑有工作負載和程序會受益於 Dart 針對 WASM。 我要說的是,期望所有 Dart 程序都能神奇地變快是不正確的。

在上次 Flutter 團隊 AMA 上 reddit Flutter 團隊成員 Todd Volkert 說:

WebAssembly 是我們目前正在評估的東西,以了解將其與 Flutter 集成的機會。 目前沒有具體的報告。

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM