Chrome 59で新しいJavaScriptインタプリタ「Ignition」とコンパイラ「Turbofan」が有効に。より省メモリかつ高速。「Crankshaft」は引退へ

2017年5月8日

現在ベータ版として開発が進んでいる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」は完全に置き換えられ、引退することになる見通しです。

あわせて読みたい

HTML/CSS JavaScript Web技術 Chrome




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本