Chrome 59で新しいJavaScriptインタプリタ「Ignition」とコンパイラ「Turbofan」が有効に。より省メモリかつ高速。「Crankshaft」は引退へ
現在ベータ版として開発が進んでいるChrome 59に搭載されるV8 JavaScriptエンジン「V8 Release 5.9」では、新しいJavaScriptインタプリタ「Iginition」とコンパイラ「Turbofan」がデフォルトで有効になると、V8 JavaScript Engineのブログで説明されています。
V8 5.9 is going to be the first version with Ignition+Turbofan enabled by default. In general, this switch should lead to lower memory consumption and faster startup for web application across the board, and we don’t expect stability or performance issues because the new pipeline has already undergone significant testing.
V8 5.9ではIgnition+Trubofanがデフォルトで有効になる最初のバージョンになる。基本的に、この変更によって幅広いWebアプリケーションにおいて消費メモリが減り、より高速に立ち上がるようになる。また、この2つの組み合わせはこれまで十分にテストされてきたため、安定性や性能の問題はないと考えられる。
(「V8 JavaScript Engine: V8 Release 5.9」から)
なぜ新しくインタプリタ(Ignition)とコンパイラ(Turbofan)の組み合わせが採用されるのかというと、理由は、2016年8月23日付で投稿されたブログ記事「V8 JavaScript Engine: Firing up the Ignition Interpreter」に説明があります。
これまでのインタプリタがないV8では、実行開始時にベースラインコンパイラによって最適化されないコードがまず生成されてJavaScriptが実行され、実行中に最適化が進むことになります。しかしこの最適化前のコードのメモリ消費量が大きいため、Ignitionはそれを解決するものだとのこと。
One of the issues with this approach (in addition to architectural complexity) is that the JITed machine code can consume a significant amount of memory, even if the code is only executed once. In order to mitigate this overhead, the V8 team has built a new JavaScript interpreter, called Ignition, which can replace V8’s baseline compiler, executing code with less memory overhead and paving the way for a simpler script execution pipeline.
このアプローチの問題は(アーキテクチャ的な複雑性に加えて)、JITコンパイルされたマシンコードが膨大なメモリを消費するということ。一回しか実行されないコードに対してもだ。このオーバーヘッドを解消するため、V8チームは「Ignition」と呼ばれる新しいJavaScriptインタプリタを開発した。これはV8のベースラインコンパイラを置き換え、より小さなメモリオーバーヘッドとなり、シンプルなスクリプト実行パイプラインへと導くものになる。
そしてそのあとでCrankshaftもしくは今回有効になったTurbofanのような最適化コンパイラへと移り、より高速な実行へと進んでいくわけです。
新しいコンパイラのTurbofanはIgnitionと連係しつつ、これまでよりもより最適化が進められ、現実のWebアプリケーションにおいてより高速なコードを生成するとされています(2015年と少し古いですが、ここに比較記事があります)。
IgnitionとTurbofanがV8のデフォルトになることで、これまで長年にわたって使われてきたJITコンパイラ「Crankshaft」は完全に置き換えられ、引退することになる見通しです。
あわせて読みたい
Red Hat、「OpenShift.io」発表。Webブラウザだけでチーム開発/タスク管理/エディタとデバッガ/デプロイなどを実現するクラウドサービス。Red Hat Summit 2017
≪前の記事
VISAカードのインフラがDocker採用。数秒でプロビジョニング、パッチやメンテにさよなら、消えるインフラ。DockerCon 2017