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
NEC、国土交通省の関東地方整備局にCADシンクライアントソリューション提供
IT関連
2021-04-26 17:04
「Windows 11」発表 Androidアプリが動作するように【更新終了】
企業・業界動向
2021-06-26 03:17
TwitterがAPI刷新のテコ入れためにAPI統合化プラットフォームReshuffleを買収
ネットサービス
2021-03-25 15:51
【レビュー】iPhone 13/13 Proの新色グリーンを実機でチェック!iOS 15.4のマスクありFace IDも試した
IT関連
2022-03-16 15:14
「AI」と呼ばれなくなる日も近い?–あらゆる現場に浸透が進む
IT関連
2021-02-18 20:59
貨物船にコンピュータービジョンを後付けして衝突事故を防ぐOrca AIがシリーズAで約14億円調達
人工知能・AI
2021-04-23 05:03
今年(2023年)の国内クラウド市場規模が7兆円超となり、従来型のIT市場規模を上回ることが明らかに。IDCジャパン
クラウド
2023-07-05 04:50
ブロードコム・ヴイエムウェアが本格始動–大企業のオンプレ回帰に照準
IT関連
2024-08-30 02:07
富裕層以外の投資家にも道を開くエクイティクラウドファンディングをメインストリームに押し上げたいGumroad
VC / エンジェル
2021-05-18 05:27
経営基盤ソリューション「SuperStream-NX」、インボイス制度に対応
IT関連
2022-05-27 05:42
Hondaと楽天の自動配送ロボ、筑波大構内を走る サービス実現に向け技術検証
ロボット・AI
2021-07-20 11:01
「今日もシステムが落ちなかった、ありがとう」なんて言われたことのない運用者に光を! クラウド運用に焦点を当てたテックイベント、Cloud Operator Days Tokyo[PR]
PR
2021-07-14 11:59
分散クラウドとDX時代に向けて、セキュアなアプリ環境を実現–A10ネットワークス・川口社長
IT関連
2023-01-13 06:43
「遠くまで行きたければ、みんなで行け」–長野県と77市町村が進めるDX戦略
IT関連
2023-09-26 08:45