Firefox to get massive JavaScript performance boost:その理由はUCLAのAndreas GalとMichael Franzが開発した「トレーシング(Tracing)」技術を用いたJITコンパイラ(Tracemonkey)を搭載するから。トレーシングは普通のJITと何が違うかというと、いきなりスクリプトを完全にコンパイルするんじゃなくて、ループなど最適化効果の高い部分でどれくらい頻繁にメソッドが呼ばれるかを調べてからコンパイルする点にある。これによって最初にコンパイルするための待ち時間が必要という、JITの弱点も解消される。
Mozilla is leveraging an impressive new optimization technique to bring a big performance boost to the Firefox JavaScript engine. The code was merged today (but is not yet ready to be enabled by default in the nightly builds) and is planned for inclusion in Firefox 3.1, the next incremental update of the open-source web browser.
Tracingに関するGalの論文はこちら。
- Making the Compilation “Pipeline” Explicit:Dynamic Compilation Using Trace Tree Serialization(pdf)
- Incremental Dynamic Code Generation with Trace Trees(pdf)
- HotpathVM: An Effective JIT Compile Resource-constrained Devices(pdf)
Mozillaでは既にFirefox4をターゲットにTamarinという次世代Javascript実行時エンジンプロジェクトが存在するが、Firefox 3.1はそれを待たずに再び劇的な速度進化を遂げることになる。下のベンチマーク結果グラフは全体パフォーマンスを示すわけではないので、20倍とか30倍ということにはならないだろうが、Firefox 3に比べて数倍にはなるんじゃないか? IE7は論外ということになるんだろう。