by Aditya Srinivasan

GoogleのJavaScript実行エンジンの最新版「V8 5.9」で、これまで3年半にわたって開発が続けられてきたインタプリタ「Ignition」とコンパイラ「TurboFan」がデフォルトで有効になります。従来はFull-CodegenとCrankshaftの組み合わせが利用されてきましたが、この変更によってGoogle Chromeは全体的な性能向上が見込まれています。

V8 JavaScript Engine: Launching Ignition and TurboFan

https://v8project.blogspot.jp/2017/05/launching-ignition-and-turbofan.html



Google ChromeにはGoogle製のJavaScript実行エンジン「V8」が利用されてきました。Crankshaftは2010年に当時の新JavaScriptエンジンとして登場したもので、この時の更新は2008年以来のChromeの更新の中で最もパフォーマンスが向上する内容となりました。

Chromium Blog: A New Crankshaft for V8

https://blog.chromium.org/2010/12/new-crankshaft-for-v8.html

しかし、新しいJavaScript言語機能とその機能の最適化に対応することができなくなってきたため、2013年後半から新コンパイラ「TurboFan」のプロジェクトが始動することになりました。

また、モバイル端末のメモリ消費削減を目標としてインタプリタ「Ignition」の開発もスタート。Ignitionのバイトコードを使用して、TurboFanで直接最適化されたマシンコードを生成できるような設計に変更することで、アーキテクチャ全体に大きなメリットがもたらされることになりました。

V8 JavaScriptエンジンの公式ブログではどれぐらいパフォーマンスが改善するのかというグラフが掲載されています。Nexus 5Xを利用した場合、Instagramで30%近い改善が見られます。



こちらはLinux版利用時で、モバイル版に比べると改善幅は小さめ。



V8のバージョン5.8とバージョン5.9の各種ベンチマークスコアの比較。バージョン5.8の値を1としたときのグラフで、バージョン5.9ではいずれも数値が良くなっています。



Chrome M59ではデスクトップやハイエンドモバイルデバイスでメモリ消費量が5%〜10%削減されるとのことですが、V8チームではこれらの改善は始まりに過ぎず、さらなる最適化の道を切り開いていくとコメントしています。