Firefox web browser - Faster, more secure & customizable

Firefoxの開発版であるFirefoxナイトリーに「OdinMonkey」と呼ばれる新しいJavaScriptエンジンが追加された。開発者らの説明によれば、従来のFirefoxやChromeに搭載されているJavaScriptエンジンと比較してかなり高速になっており、ネイティブにコンパイルされたコードの2倍程度の実行時間で処理できる。OdinMonkeyは6月にリリースが予定されているFirefox 22に搭載される見通し。

Firefoxはこれまで何度もJavaScriptエンジンにエポックメーキング的な技術を取り込んで実行速度の高速化に取り組んできた。OdinMonkeyはそうした取り組みの最新版。OdinMonkeyの資料はいくつがあるが、仕様書を読むのがわかりやすい。

実行速度の高速化に関するインパクトを感じたいのであれば、次のスライドの19ページ以降に簡潔にまとまっている。

JavaScriptは明示的に型を指定しない言語。実行環境が実行時に動的に型を推論して処理を実施する。この処理が実行速度の遅さの原因になっている。型の推論をいかに高速に実施し最適化するかは、これまでもJavaScript/JITエンジン開発の主題のひとつだった。

JavaScriptは動的に型を決定する言語だが、「このように記述したときは確実にintである」といったいくつかの規則がある。OdinMonkeyはここに着目し、型の推論をしやすくするためのJavaScriptサブセット「asm.js」を開発。OdinMonkeyはasm.jsが想定しているコードを高速に実行するために最適化されたエンジンになっている。型の推論が容易な記述と、そのように書かれたコードを最速に実行するためのエンジン、これがネイティブの2倍といった高速な実行を実現している。