Mozilla Flux

Mozilla関係の情報に特化したブログです。

Firefox 9:型推論の効果やいかに

Firefox 9の注目点は、何といってもJavaScriptの実行速度の向上だ。Mozilla Developer Streetで紹介されているように、型推論(Type Inference:TI)と呼ばれる技術が実装され、JaegerMonkey(JM)が従来よりも高速なコードを生成できるようになった。今後はこのJM+TIがJITコンパイラの中核を担い、TraceMonkeyはその役割を終えることになる。

はたして型推論の効果は出ているのか。ベンチマークをとってみよう。比較対象は、以下のとおりWindows 7 SP1(64bit版)上で動作する32bit版のFirefox 8.0.1とFirefox 9.0(Beta 6)。新規プロファイルを初期設定のまま利用し、アドオンはすべて無効化するが、プラグインはShockwave Flash 11.1(r102)だけを有効にした。なお、初期設定でハードウェア(HW)アクセラレーションが有効になっている。

  • Firefox 8:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1
  • Firefox 9:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20100101 Firefox/9.0

メモリ使用量

まずはメモリ使用量の計測から。以下のWebサイトをその記載順にあらかじめブックマークしておき、この10サイトを「タブですべて開く」でいっせいに読み込む。読み込みが完了したら、各タブをクリックして、Webページを実際に画面に表示させる。つまり最後に表示されるのはWikipedia(日本語版)になる。1分間そのまま放置した後、about:memoryを呼びだしてExplicit Allocationsの値を見る。

次に、「他のタブをすべて閉じる」でYahoo! JAPAN以外のWebページはすべて閉じる。1分間そのまま放置した後、再びabout:memoryを呼びだしてExplicit Allocationsの値を見る。結果は次のとおり。

Firefox 8 Firefox 9
10サイト表示 106.77MB 103.25MB
単サイト表示 45.37MB 45.08MB

単サイト表示では差が出ないが、10サイト表示だとFirefox 9のほうがメモリ消費量は少ない。高速化がメモリ消費量の増大につながるケースもあるが、今回その心配はなさそうだ。

ページの読み込み

WebWaitを用いて、指定したWebページを10秒間隔で5回読み込ませた。Yahoo!ニュースasahi.comを対象にしており、秒数が少ないほど高速だ。

Yahoo!ニュース

Firefox 8 Firefox 9
平均値 0.83秒 1.16秒
中央値 0.48秒 2.26秒

残念ながらFirefox 9のパフォーマンスが低下している。再読込の際になぜか遅くなる回があり、それが足を引っ張っているのだ。前回のテストでFirefox 8はスムーズな読み込みを行えており、今回もそれが変わっていないことからすると、Firefox 9の処理のどこかに問題があるのかもしれない。

asahi.com

Firefox 8 Firefox 9
平均値 2.39秒 1.75秒
中央値 1.98秒 1.25秒

こちらはFirefox 9が平均値、中央値ともに明らかに勝っている。読み込みが極端に遅くなる回がなかったためである。つまり性能的にはFirefox 9が上なのに、不得意なページに当たるとパフォーマンスが落ちるようなのだ。実にもったいない。初回ではなく2回目以降で問題が発生していることから、キャッシュの処理が影響していることも考えられる。

動的ページの処理

GUIMark 2から、Vector Charting TestText Column Testをピックアップ。今回からテストを2つに減らした。

Vector Charting Test

Firefox 8 Firefox 9
fps 22.08 21.96

今回もまた、測定誤差のレベルでしか違いがみられなかった。

Text Column Test

Firefox 8 Firefox 9
fps 52.63 53.69

これも誤差かもしれないが、目視ではFirefox 9が心もち速くなったように感じた。

Canvasの描画

風と宇宙とプログラム「Canvasのベンチマークテストを作って速度を比較してみた」に掲載されていたCanvas Performance Benchmarkを用いて、Canvasの描画処理に関する性能を測定した。

Firefox 8 Firefox 9
Total Score 2.90 2.90

前回の予想どおり、性能に変化はない。

HTML5/JavaScript総合

enchant.js

4Gamer.net「『enchant.js』でゲームはどれくらい動くのか? HTML5でゲームベンチマークを取ってみよう」に掲載されていたシューティングゲームタイプのベンチマークを利用し、100秒間のフレームレートの合計値を測定した。

Firefox 8 Firefox 9
Score 6282 6411

前回最大の問題として指摘した個所だが、Firefox 9でもやはり処理落ちが発生する。スコアはFirefox 9がFirefox 8を上回っているものの、Firefox 7が7000台をマークしていたことを思えば、満足のいく結果ではない。JavaScriptエンジンの強化によっていわば力業でスコアを引き上げただけで、根本的な解決にはなっていない。

Peacekeeper

総合テストとして、新たにFuturemarkのPeacekeeperを加える。以前から存在していたが、リニューアルによって、PCだけでなくタブレットやスマートフォンも対象とするようになり、プラグイン不要のシンプルなベンチマークへと生まれ変わった。

Firefox 8 Firefox 9
Points 1788 1717

総合ポイントではFirefox 9が劣る結果に。詳細をみてもスコアの浮き沈みがけっこうあり、Webブラウザ全体をバランスよく調整することの難しさが浮き彫りとなった。

JavaScript処理

代表的なJavaScriptベンチマークを利用して処理能力を測る。JM+TIの真価が問われる部門だ。

SunSpider

Chromium Blog「Updating JavaScript Benchmarks for Modern Browsers」で紹介されている、Google修正版(各テストを50回連続で行う)のSunSpider 0.9.1 JavaScript Benchmarkを使用した。数値が小さいほど高速である。

Firefox 8 Firefox 9
Total 186.7ms +/- 1.9% 160.4ms +/- 3.2%

さっそく型推論の効果が出たようだ。JavaScriptエンジンの高速化が進み、SunSpiderでは差がつきにくくなっている中、着実にスコアを伸ばしている。

V8 Benchmark

次に、V8 Benchmark Suite - version 6のスコアをチェック。

Firefox 8 Firefox 9
Score 5002 6746

これは文句なしにFirefox 9の勝利だ。個別の項目では、DeltaBlueの値が5296から10493へ、Cryptoの値が6702から15152へと向上しているのが目につく。

Dromaeo

Dromaeo: JavaScript Performance Testingは、Mozillaが提供する重量級ベンチマークであり、JavaScriptエンジンなどにかなりの負荷をかけてその性能を測定してくれる。以下にRecommended Testsの最終結果を掲載する。詳細は比較表からどうぞ。

Firefox 8 Firefox 9
Total 468.79runs/s ±1.51% 503.58runs/s ±1.92%

Firefox 4以降あまり変化がなかったこのテストでも、JM+TIの効果が出ているのは明白だ。上記の詳細をみてもらうと分かるが、一部のテストでスコアが大きく増加しており、これが総合値を引っ張り上げている。

Kraken

Kraken JavaScript BenchmarkはMozillaが提供するベンチマーク。従来のものと比べ、現実のWebアプリを処理した際の性能を反映した結果になるという。数値が小さいほど高速である。

Firefox 8 Firefox 9
Total 4604.0ms +/- 2.1% 3346.7ms +/- 0.9%
ai 751.9ms +/- 0.9% 99.6ms +/- 1.3%
audio 1570.9ms +/- 6.5% 1048.0ms +/- 1.7%
imaging 1388.2ms +/- 1.4% 1362.3ms +/- 0.4%
json 169.7ms +/- 1.8% 190.9ms +/- 7.6%
stanford 723.3ms +/- 0.6% 645.9ms +/- 2.5%

Firefox 4以降、少しずつスコアが下がり続けていたこのベンチマークで、Firefox 9は一転して好成績を収めた。一部のテストで劇的な改善を遂げていることから、JM+TIの組み合わせが上手くハマったときは相当な効果が上がるらしい。

総合評価

Firefox 9は、メモリ消費量を犠牲にすることなくJavaScriptの処理性能を改善しており、この点はユーザーにとってのメリットが大きい。日常的な使用の範囲では、Webページの処理が速くなることで、これまでよりも快適なブラウジングが可能になるだろう。

他方、Webアプリ系のベンチマークでは若干の問題が見つかっており、あらゆる場面で高速化を達成できるようにバランスをとるのは難しい様子である。ただ、6週間で次のバージョンが出るので修正されるのも早い。Firefox 10での調整に期待したいところだ。