Google、Google Sheetsの計算エンジンをWebAssemblyに最適化し、2倍の性能を実現したと発表

今回は「Google、Google Sheetsの計算エンジンをWebAssemblyに最適化し、2倍の性能を実現したと発表」についてご紹介します。

関連ワード (動的、移植、高速等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


GoogleはWebブラウザ上でスプレッドシート機能を提供する「Google Sheets」の計算エンジンの性能をWebAssembyで実装し、従来のJavaScriptによる実装と比較して性能を2倍に向上させたことを明らかにしました。

これにより単純なSUM計算から複雑なクエリまで、シート上でのあらゆる計算を始め、ピボットテーブルの作成、条件付きフォーマットなどさまざまな処理が高速になるとのことです。

Google SpreadSheetsの計算エンジンをWebAssemblyに最適化

この性能向上は、JavaScriptで構築されていた計算エンジンをWebAssemblyに最適化したことで実現していると説明されており、そのためにWebAssemby GC(ガベージコレクション)機能を用いたとのことです。

そのため現時点ではChromeとMicrosoft Edgeで利用可能で、今後FirefoxやSafariでも利用可能になることを期待しているとしています。

そしてGoogleがいかにして計算エンジンをJavaScriptからWebAssemblyへ移植し、最適化したかについては別の記事「Why Google Sheets ported its calculation worker from JavaScript to WasmGC」(Translation APIによる日本語版)で紹介されています。

ここではGoogleが行ったWebAssemblyへの最適化の工程を、上記の記事を基にまとめてみてみましょう。

最初はサーバで実行されていたJava製の計算エンジン

2006年にGoogle Sheetsを初めてリリースしたときには、すべての計算はJavaで書かれた計算エンジンを用いてサーバ上で行われていました。

計算エンジンがJavaScript化されてWebブラウザ上で実行されるようになったのは2013年。その際、計算エンジンの作成にはJavaコードからJavaScriptコードを生成するGoogle Web Toolkit(GWT)が用いられ、その後にJava to Closure JavaScript Transpiler(J2CL)が用いられるようになります。

しかしJavaScriptが動的な型付け言語であることを主な理由として、JITなどにより改善されつつもJavaScriptの実行速度は十分高速ではない、というのがGoogleの評価でした。

その解決策としてガベージコレクション機能(WebAssembly GC)を備えたWebAssemblyが採用されることになりました。

WebAssembly GCが登場、Javaからの移植が可能に

Googleの説明の中には出てきませんが、GoogleがこのタイミングでWebAssemblyを採用したのは、Javaコードを基にWebAssembly化するには、WebAssemblyにガベージコレクション機能が欠かせなかったからです。

Javaの実行基盤となるJavaVMは、プログラムが動的に確保して利用したメモリ領域のうち、使わなくなったメモリ領域を自動的に解放してくれる「ガベージコレクション」機能を備えています。

Javaコードを基にGoogle Sheetsの計算エンジンをWebAssembly化するには(ガベージコレクション機能も含めてWebAssemblyで実装することは技術的に不可能ではないものの手間を考えると現実的ではないため)、WebAssembly自体がガベージコレクション機能を搭載することが求められたのです。

このWebAssembly GCは、2023年末にChromeの正式な機能として取り入れられました。

参考:WebAssemblyのガベージコレクションが正式機能に、最新版のChrome 119で。Firefoxも今月リリースのFirefox 120で正式機能になる見通し

今年(2024年)5月には、WebAssmbly GCを用いたFlutter/DartのWebAssemblyへのコンパイル機能が安定版になるなど、実績も増えてきたことで安心して使えるようになってきたところです。

参考:Flutter/DartのWebAssemblyコンパイル機能が安定版に。より高速でスムーズなユーザー体験などを実現

3つの最適化を実行

Google WorkspaceチームとChromeチームは協力して計算エンジンのWebAssembly化に取り組みます。2021年半ばにはJavaからWebAssembly GC版WebAssemblyへのコンパイラを動作させる準備が整い、その年末にはWebAssembly版計算エンジンを搭載したGoogle Sheetsのプロトタイプ版が完成します。

2022年に入り、このプロトタイプを基に性能テストを行ったところ、JavaScript版計算エンジン搭載のGoogle Sheetsより2倍ほど遅くなっていました。つまり、単純にWebAssembly版にしたところ、遅くなってしまったわけです。

ここから、主に以下の3種類の最適化を行ったとGoogleは説明しています。

  • JavaVMとJavaScriptエンジンのV8で用いられていた最適化を取り入れる
  • WebAssemblyによる実装のうち、ブラウザAPIで呼び出せる機能はAPIを呼び出す
  • JavaScriptに最適化されていた実装を修正する

1つ目の最適化については「virtual method dispatching」「speculative inlining」「devirtualization」などが行われ、2つ目の最適化についてはJavaで実装されていた正規表現ライブラリ(re2j)をWebブラウザに内蔵されている正規表現のAPIを呼び出して処理することで100倍高速になり、さらに3つ目として過剰にJavaScriptに最適化されたコードを修正したことが説明されました。

これによってWebAssembly版計算エンジンを搭載したGoogle Sheetsの計算速度が、JavaScript版計算エンジン搭載よりも約2倍高速になったとのことです。

マルチスレッドサポートでさらに高性能を期待

Googleは、今後WebAssemblyがガベージコレクション機能に加えて共有メモリマルチスレッドをサポートすることでシングルスレッド性能をさらに向上させることを期待しているとし、すべてのWeb開発者が、高性能を追求する開発プロジェクトにおいて、ガベージコレクションをサポートしたWebAssemblyの使用を検討することを勧めるとしています。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
GitLabが有料サブスクリプションプランの構成を変更、Bronze / Starterを廃止
ネットサービス
2021-01-29 15:43
Windows 11戦略で見えてくる、Microsoftの“追い込み”手腕としぶとさ (1/3 ページ)
くわしく
2021-07-02 20:09
DXプロジェクトの軌道修正–問題に対処するための5つのヒント
IT関連
2022-09-08 09:16
Square、143%増収 Cash Appのビットコイン収益は200%増
企業・業界動向
2021-08-03 06:31
[速報]Windows 11のFile Explorerにタブ機能、集中作業用のタイマー機能、オンライン会議のアイコンタクト機能など新機能
Microsoft
2022-04-06 13:58
JavaScriptランタイムのBun、インストール不要の実行ファイル生成が可能に。Webpackより200倍以上高速とするバンドラがβ版、Puppeteerにも対応
Bun
2023-06-06 17:19
Meta、画像内の物体を識別するAIモデル「Segment Anything Model」を公開
IT関連
2023-04-07 04:28
dotData、データサイエンス自動化ソフトの最新版をリリース
IT関連
2023-07-15 13:14
ランサムウェア被害のコスト、2031年には28兆円超に–Cybersecurity Ventures
IT関連
2021-06-11 23:22
Docker、ビルドを40倍高速にする次世代のDocker Buildを開発中。DockerCon 23
Docker
2023-10-12 14:45
日本企業のデータ侵害、サードパーティーに由来する割合が高い–SecurityScorecardが分析
IT関連
2024-11-23 07:47
Uber Freightが事業を増強、物流管理ネットワークTransplaceを約2475億円で買収
その他
2021-07-24 20:41
マイクロソフト「Visual Studio 2022」、初のプレビュー版–64ビット化
IT関連
2021-06-18 11:23
NEC、数秒のサンプル映像のみで目的の行動を検出–骨格の変化を活用
IT関連
2021-04-06 06:39