Mozillaは8月30日(米国時間)、「The Baseline Interpreter: a faster JS interpreter in Firefox 70 - Mozilla Hacks - the Web developer blog」において、2019年10月に公開が予定されているFirefox 70において、JavaScriptエンジンのパフォーマンスが向上すると伝えた。メモリの使用量も減るとされている。
主な改善内容は次のとおり。
- ページ読み込み時間が2〜8%ほど改善。ページ読み込み時にはJavaScriptの実行(解析、スタイル、レイアウト、グラフィックスなど)など、さまざまな処理が行われており、この部分の性能が向上
- さまざまなdevtoolsパフォーマンステストが2〜10%ほど改善
- メモリ使用量の削減
これまでのFirefoxは次のようにC++インタプリタで処理したデータを、ベースラインJITとIonJIT (IonMonkey)という2段階のJITで高速化していた。
この方法は、2段階に分けて高速なネイティブコードを生成することができる。ベースラインJITとIonJITといったようにJITを2段階に分けることで、短いコンパイル時間で浅い最適化、長いコンパイル時間で深い最適化を切り分けることに成功。JITを効かせつつコンパイル時間を抑えて軽快な動作を実現した。
しかし、この方法でも最近のGmailやGoogle Driveで使われているJavaScriptの量は多く、ベースラインJITですらコンパイル時間が気になるようになってきていたと指摘。こうした問題を受けて、Mozillaは次のようにC++インタプリタとベースラインJITの間に双方の中間のような動作をする「ベースラインインタプリタ」を開発して追加したとしている。
Mozillaはこの方法でパフォーマンスを向上させることができたとしており、参考例として次のベンチマーク結果を公表している。
ベースラインインタプリタを導入したことで、ベースラインJITおよびIonJITの簡素化も進めることができたという。ベースラインインタプリタを導入したことでベースラインJITを別スレッドにすることも可能になったとしており、ベースラインJITの別スレッド化は今後の課題とのこと。Firefox 70よりも後のバージョンでさらにJavaScript処理の高速化が期待できる。
Firefoxに搭載されているJavaScriptエンジンは、長期間にわたって取り組まれてきたさまざまな経験や開発が取り込まれており、高速なコードを生成することが知られている。