![]() |
Firefox web browser - Faster, more secure & customizable |
a quick note on JavaScript engine components ★ Mozilla Hacks - the Web developer blogにおいて、最近追加された技術も含めてFirefoxで利用されているJavaScript技術が簡単にまとめられている。FirefoxはJavaScriptの処理性能を改善する目的で新しくJaegerMonkey / Nitroを導入したが、従来の技術も含めて若干の誤解が見られるという。簡単に関係を説明することで、こうした誤解を払拭する狙いがある。
紹介されている技術をまとめると次のとおり。
| JavaScriptエンジンコンポーネント | 内容 | 備考 |
|---|---|---|
| SpiderMonkey | FirefoxのコアJavaScriptインタプリタ | |
| TraceMonkey | JavaScriptをNanojitを使ってネイティブコードに変換して高速化する。JavaScript実行をモニタリングしてブースト可能な部分を見つけてピンポイントに実施する | |
| JaegerMonkey | JavaScriptをNitroを使ってネイティブコードに変換して高速化する。より多くのJavaScriptコードを変換する | |
| Nanojit | JavaScriptからネイティブコードを生成する。いくつもの最適化を実施し高速に動作するコードを生成する | AdobeがActionScript VMで採用している技術 |
| Nitro | JavaScriptからネイティブコードを生成する。それほど最適化しないが、変換処理自体が高速 | Apple WebKitに導入された技術 |
| SpiderMonkey |
|---|
| FirefoxのメインとなるコアJavaScriptインタプリタ。JavaScriptコードを読み取り、中間形式バイトコードに変換しながら逐次実行する。Firefox 3.0およびそれ以前のバージョンではJavaScript処理のすべてをSpiderMonkeyが実施していた。以降で導入された高速化技術TraceMonkey (Nanojit)およびJaegerMonkey (Nitro)が動作しやすいように改善が取り組まれている。インタプリタ自身の改善も継続されており、これまでも、そしてFirefox 3.5および3.6、またこれ以降のバージョンにおいてもJavaScriptエンジンの基盤でありつづける。 |
| TraceMonkey |
|---|
| Firefox 3.5で導入された高速化技術。JavaScriptの実行をモニタリングして繰り返し実行されるコードパスを見つけ、該当部分をネイティブコードへ変換する。変換時には最適化が実施され、高速に動作するネイティブコードが生成される。このためTraceMonkeyによる高速化が成功するケースでは大幅な高速化が実現される。逆に、高速化できるコードが限られており、高速化されるケースとそうでないケースに大きな開きがある。高速に動作するネイティブコードを生成する処理にはNanojitが利用されている。 |
| JaegerMonkey |
|---|
| Firefox 3.7へ向けて新しく追加された最適化技術。JavaScriptをNitroを使ってネイティブコードに変換して高速化する。モニタリングを実施して最適化するコードパスを探すTraceMonkeyと異なり、より広範囲に渡ってネイティブコードを生成するという特徴がある。TraceMonkeyが機能した場合ほどの高速化は実施できないが、全体に渡ってネイティブコード生成することが可能で、性能の全体的な底上げが可能。 |
| Nanojit |
|---|
| 高速に動作するネイティブコードを生成する。高レベルな記述のJavaScriptを処理することができ、優れた最適化も実施する。もともとはTamarinプロジェクトで開発されたコードの一部を取り出したもの。TamarinはECMAScript 4に対応した実装だが、FirefoxはECMAScript 4そのものはサポートしていないためすべてを採用するのは適切とはいえない。また、Tamarinのインタプリタ実装はSpiderMonkeyよりも遅かったため、その部分の利用価値も低かった。このため、高速に動作するネイティブコードを生成することができるNanojitの部分のみを取り出して利用している。AdobeがActionScript VMで採用しており、現在も開発が継続されている。 |
| Nitro |
|---|
| Apple WebKitに導入されたネイティブコード生成機能。JaegerMonkeyでネイティブコードを生成するために利用される。Nanojitが最適化された高速なネイティブコードを生成するのと比べ、それほど高速なコードは生成しないが、より広範囲に適用できる。 |
Firefox JavaScriptエンジンはSpiderMonkeyということになる。これはこれまでも、そしてこれからも変わらない。SpiderMonkeyで利用される2つの主な高速化技術がTraceMonkeyとJaegerMonkeyということになり、JaegerMonkeyは全体をネイティブコードに変換して性能の引き上げを、TraceMonkeyは繰り返し実施されるコードパスを最適化されたネイティブコードに変換して性能にブーストをかけるために利用される。そしてTraceMonkeyで利用されるネイティブコード生成技術がNanojit、JaegerMonkeyで利用されるのがNitroということになる。
| ニトロでブースト - Firefox、新しい高速化技術を導入 [2010/3/2] |
| Firefox 3.6のJavaScript高速化技術まとめ [2010/1/18] |
| すべてZIPにまとめて高速化、Firefox 3.7で対応 [2009/11/19] |
| Firefox高速化報告、11月14日 [2009/11/17] |
| Firefox高速化報告、11月7日 [2009/11/9] |
| Firefox on Macは起動高速化、XP、Vista、Linuxは変わらず [2009/10/28] |
| Firefox on Mac、コールドスタートで20%高速化 [2009/10/5] |
| Firefox起動高速化3.6で10%、3.7で20% - Win7は3.5が爆速 [2009/9/8] |
| Xilinx、FPGA「Kintex-7」エンベデッド キットを発表 [18:13 5/28] |
| Freescale、64ビットマルチコアプロセッサ「QorIQ P5」ファミリを発表 [18:10 5/28] |
| パナソニック、見える化から見せる化へ、LAN対応エネルギーモニタを発表 [18:06 5/28] |
| 愛媛大、「ウルトラ赤外線銀河」は4個以上の銀河の衝突で誕生したと発表 [18:00 5/28] |
| インスリンは複数の分泌パターンで3種類の分子を選択的に制御 - 東大が解明 [17:50 5/28] |
|
日本一の1杯は?! “ガチ”ランキング「ラーメンWalkerグランプリ」結果発表 [18:30 5/28] ライフ |
|
マウス、法人BTO「MousePro」でQuadro NVS 450搭載6画面に標準対応の新機種 [18:28 5/28] パソコン |
|
和櫻工房、使えば使うほど味の出る総本革張りのUSBキーボード [18:26 5/28] パソコン |
|
ITU、超高解像度画質を「4K UHDTV」「8K UHDTV」という名称で定義 [18:24 5/28] 家電 |
|
【レースクイーン特集】参加チームほぼ全部載せ!その6【スーパーGT2012】第2戦富士500km [18:21 5/28] キャリア |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。