Firefox web browser - Faster, more secure & customizable

ブラウザのJavaScriptエンジン性能はそのまま最近のWebブラウジングの快適さに結びつくことが多い。Opera、Chrome、SafariはそれぞれのJavaScriptエンジンCarakan、V8、Nitroで熾烈な競争を繰り広げており、驚異的な勢いで高速化を成し遂げている。Firefoxはこの高速化競争では押されぎみだ。

FirefoxはTraceMonkeyでJavaScript処理の高速化を実現している。TraceMonkeyはきわめて強力な高速化技術で、最適化されたあとのコードはすばらしい速度で動作する。「ロケットブースター」という言葉どおりの動きをするが、残念ながら適用できないケースが多々ある。Firefoxがほかの3ブラウザにかなわないのはこのためだ。ブーストできるケースが少なければそれだけ高速化も実現できない。

2月26日(米国時間)、Firefox JavaScript JIT開発者から新しい実装JaegerMonkeyが発表された。発表されたブログごとに数値が違っているが、SunSpiderのベンチマークでインタプリタと比べて18%の高速化、またはx86で30%ほどの高速化およびx64で45%の高速化が観測されたという報告がある。まだ本格的な最適化に取り組む前の段階でこの結果であり、今後TraceMonkeyとの組み合わせと最適化でさらなる高速化が見込めるという。

説明によればJaegerMonkeyはTraceMonkeyが採用しているTrace JITではなくMethodベースのJITを実現するもの。Trace JITと異なり全域に渡って均一的に高速化が可能となる。TraceMonkeyのような劇的な高速化は見込めないが、TraceMonkeyが適用できないケースでも問題なく適用できる。つまり、JaegerMonkeyで全体の底上げを実現し、TraceMonkeyでさらに加速をかけるという仕組みになる。

TraceMonkeyではバックエンドにnanojitを使っているが、この実装はMethodベースのJITには向いていないため、Safari/Webkitで使われているNitroの実装を移植してJaegerMonkeyを実装したという。JaegerMonkeyを試してみる方法はJaegerMonkey - MozillaWikiで説明されている。Firefoxが最速競争に追いつく可能性がでてきた。