型推論により Firefox Beta の JavaScript が高速化しました
先日 Firefox 9 の新機能をご紹介しましたが、その中でも目玉機能と言える JavaScript エンジンの改良について、Firefox エンジニアが紹介記事を書いていましたので翻訳しました。型推論の詳細について興味のある型は、最後に紹介されている論文もどうぞ。
原文: Type Inference brings JS improvements to Firefox Beta
by Brian Bondy, Firefox Engineer
Firefox 9 の目玉機能は、一年以上も研究が続けられていた研究プロジェクトである型推論 (TI: Type Inference) が導入されたことです。SpiderMonkey JavaScript エンジンに導入された型推論とは、プログラムのコード解析と実行時の変数型監視を組み合わせて、JavaScript プログラムの型情報を得る機能です。得られた型情報はより効率的なコードを生成するため JIT コンパイル中に利用されます。Firefox 9 では、推論された型情報を JägerMonkey JIT コンパイラで活用するよう改良されました。Firefox 9 ではデフォルトとなる、型推論を利用したコンパイルモードでは、Kraken や V8 といった主要なベンチマークでは 30% 以上高速化され、JavaScript 処理の重たい Web サイトでは大きな高速化が期待されます。
JavaScript は動的型言語であり、値の型を知らなければ JIT コンパイラはその値があらゆる型の場合を考慮したコードを生成する必要があります。このため Java などの静的型言語に比べるとプログラムの実行速度がかなり遅くなります。JägerMonkey に型推論を導入したことで、このパフォーマンスの溝のかなりの部分を埋めることができます。推論された型情報をフル活用するため現在複数のプロジェクトが進行中です。中でも特に Mozilla の次世代 JIT コンパイラ IonMonkey プロジェクトでは、Java とパフォーマンスの差を完全になくす事を目標としています。型推論で用いられている内部のアルゴリズムやテクニックについてはこちらの論文をご覧ください。