[英]Getting error : "Target dart2js failed: Exception: Warning: The 'dart2js' entrypoint script is deprecated, please use 'dart compile js' instead "
[英]Should Flutter web use Wasm instead of dart2js
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.