- Google Sheetsチームは、2022年にChromeでのWasmGC利用を発表して以降、相互に協力してきた
- これはGoogleのアプリがWasmGC上で動作する前例を作るものとなった
- 問題点: JavaScript
- Google Sheetsの計算エンジンはもともとJavaで書かれ、2006年のリリース時にはすべての計算がサーバー上で行われていた
- 2013年からはJavaScriptを使ってブラウザ上で動作するようになった
- Google Web Toolkit(GWT)を利用していたが、その後はJava to Closure JavaScript transpiler(J2CL)を使用
- JavaScriptの計算エンジンはWeb Workerで実行され、
MessageChannelを通じてメインスレッドと通信する
- JavaScript版はJava版より3倍以上遅い
- JavaScriptがJavaより遅い理由
- JavaScriptは動的言語であり、JITコンパイラによって性能は向上してきたが、なお制約がある
- 緩い型付けと動的な振る舞いのため、最適なコード生成が難しい
- TypeScriptも開発を容易にするだけで、最適化に必要な保証は提供しない
- 解決策: WasmGC
- WebAssemblyの拡張であり、ガベージコレクション言語のコンパイルに必要な機能を追加
- Javaのような言語をWeb上でほぼネイティブ速度で実行可能
- C++向けのWasmより大きな影響力が見込まれる
- Google WorkspaceとChromeの協力
- 2020年末からWasmGC評価のために協力を開始
- Sheets計算エンジンを理想的なテスト対象に選定
- V8チームとBinaryen(WASM最適化ツールチェーン)の貢献者がWasmGCランタイムとAOT最適化を担当
- 最適化プロセス
- 初期バージョンはJavaScriptより2倍遅かったが、継続的な最適化が進められている
- JVMとV8の中核的な最適化手法を再現(仮想メソッドディスパッチ、Speculative Inlining、Devirtualizationの適用だけで40%高速化)
- 高度に最適化されたブラウザAPIを活用(例: 正規表現処理が100倍向上)
- JavaScript特有のコーディングパターンを除去
- 結論
- WasmGCはWebアプリケーション開発の進め方を発展させる可能性を持つ技術
- 今後、WasmGCには共有メモリによるマルチスレッド対応と単一スレッド性能の向上が期待される
- すべてのWeb開発者に対し、高性能プロジェクトでWasmGCを使うことを推奨
2件のコメント
注目に値する事例ですね。
結論として、JavaScript から WasmGC に移植してどれだけ速くなったのかについては触れられていませんが、以下の記事を見ると2倍速くなったそうです。
Doubling calculation speed and other new innovations in Google Sheets
参考: WebAssembly ガベージコレクション(WasmGC)がついに Chrome でデフォルトで有効化