久しぶりにいろいろベンチマークを走らせてみた。Firefox 3.6 Beta(revision 1)のパフォーマンスを調べるためだ。比較対象は、最近リリースされたばかりのFirefox 3.5.4。テーマがぼやけるので、今回は他のWebブラウザを入れずに、両者の比較にとどめておく。
Firefox 3.6 Betaのユーザーエージェント文字列は、次のとおり。
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2b1) Gecko/20091029 Firefox/3.6b1 ID:20091029171059
Firefox 3.5.4についても同様に。
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.4) Gecko/20091016 Firefox/3.5.4 ID:20091016092926
検証作業は、おおむね従来のテストを踏襲したものになっており、Windows Vista SP2(32bit版)上でブラウザを動作させている点も変わりはない。が、筆者のPC環境が新しくなっているため、従来の結果との連続性は失われている。今回のデータが以後の基礎となるだろう。
ロード時間
ブラウザの読み込み速度を、WebWaitで計測したものである。以下の各表で「初回」とあるのは、ディスクキャッシュをクリアした状態で、ブラウザの起動直後に1回だけ指定ページを読み込ませた場合の数値を指す。「平均」は、2〜6回目の読み込み時間(ロードの間隔は5秒)を平均した数値だ。
1つ目の表は、はてなのフロントページを読み込ませたケースで、2つ目の表は、Yahoo!ニュースを読み込ませたケースとなっている。
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
初回 | 2.37秒 | 3.88秒 |
平均 | 0.57秒 | 0.44秒 |
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
初回 | 1.56秒 | 1.85秒 |
平均 | 1.24秒 | 1.27秒 |
3.6 Betaは、3.5.4よりも初回読み込みの速度で勝っている。新たに画像ファイルについても投機的解釈の対象になったことが、よい影響を与えているのかもしれない。これに対し再読み込みのケースでは、ほとんど差がなく、場合によっては3.5.4の方が速いかもしれないという結果が出た。しかし、計測誤差の範囲内にも見えるし、体感を基準にすれば、初回読み込みが速い3.6 Betaの方がスピーディーに感じられるだろう。
レンダリング時間
『Test rendering time』では、巨大なテーブルを処理させ、ブラウザのレンダリング性能を試すことができる。以下の表の「初回」および「平均」の意味は、ロード時間のテストと同じである。ただし、平均を出す際、読み込み間隔はとくに設定していない。
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
初回 | 3.9120秒 | 4.1800秒 |
平均 | 3.2014秒 | 3.9887秒 |
通信状況の影響を受けにくい、「平均」の値が勝負所だが、明確な差がついた。処理能力が約25%向上した計算になる。Firefox 3.5の開発中も、3.6のベースとなるGecko 1.9.2は並行して改良が続けられていたが、その成果が現れているようだ。
CSSレンダリング
新テストである。『CSS Rendering Benchmark』では、CSSによって位置指定された2500個のdiv要素(span要素を含む)をベースに、DOM処理のパフォーマンスを計測し、標準的なonLoadタイマーもチェックするという。
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
First Access | 76ms | 65ms |
DOM Load | 78ms | 78ms |
onLoad | 287ms | 326ms |
さほど違いはみられないが、onLoadの数値が3.6 Betaで改善されている。
ダイナミックコンテンツ
『HTML - DHTML Test』は、リアルタイムでコンテンツを変化させ、その描画性能を計測するものだ。ブラウザが搭載しているエンジンの各パートがうまく連携しないと、高いフレームレート(fps)を出すことは難しいだろう。
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
フレームレート | 14.84 - 16.48fps | 14.86 - 16.33fps |
両者の差は誤差と評価して差し支えない。動的コンテンツの処理性能は現状維持というわけだ。
スクロール
スタイルシートで背景画像を固定したWebページにおけるスクロール性能と、スクロール時のCPU負荷を、テストケースを用いて計測したものである。ここでいうCPU負荷とは、タスクマネージャに示されたCPU使用率の最高値を指す。なお、条件を均等にするためウィンドウはすべて最大化してある。
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
1回目 | 9152ms | 6098ms |
2回目 | 9185ms | 6108ms |
3回目 | 9112ms | 6118ms |
CPU負荷 | 44% | 71% |
首をかしげる結果となった。CPU負荷が大幅に低下したものの、スクロール性能も大幅に下がってしまっている。これがバグなのか仕様なのかは、現時点で判別できない。revision 2あるいはRCでどのように変化するのか注目しておきたい。
(09/11/03追記)
中野雅之さんのコメント欄でのご指摘によると、Firefox 3.6のスクロール性能は3.5から低下しておらず、上記の結果は、タイマーの精度の差によるものと考えられるとのこと。
JavaScriptベンチマーク
ここからは、JavaScriptエンジンの性能をチェックしていく。利用したベンチマークは、SunSpider、V8、Dromaeoという代表的な三つ。Firefoxの設定は、断らない限りデフォルトのままであり、3.6 Betaだとjit.content・jit.chromeがともにtrue、3.5.4の方はjit.contentがtrue、jit.chromeがfalseとなっている。
SunSpider
最初に、SunSpider JavaScript Benchmarkの成績を比較してみる。
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
Total | 1311.4ms +/- 2.9% | 1516.0ms +/- 4.1% |
3d | 205.8ms +/- 16.2% | 248.8ms +/- 5.5% |
access | 198.4ms +/- 10.4% | 214.0ms +/- 1.5% |
bitops | 58.4ms +/- 1.9% | 55.2ms +/- 1.9% |
controlflow | 59.4ms +/- 3.2% | 58.0ms +/- 2.1% |
crypto | 68.8ms +/- 12.3% | 85.0ms +/- 13.4% |
date | 213.6ms +/- 9.7% | 243.6ms +/- 12.0% |
math | 71.2ms +/- 12.2% | 73.0ms +/- 11.6% |
regexp | 72.0ms +/- 1.2% | 87.4ms +/- 4.2% |
string | 363.8ms +/- 3.7% | 451.0ms +/- 9.6% |
3.6 Betaは、3.5.4と比べて全般的に数値が改善された。15%ほどスピードアップした計算になり、着実な伸びを見せている。ただ、『強化されたPGOの効果は?』の追記などで述べたとおり、Firefox 3.6は、PGOのプロファイルが3.5に比べて強化されており、この点に注意が必要だ。つまり、最適化の効果によって下駄を履いている可能性がある。
jit.content・jit.chromeをともにfalseにし、TraceMonkeyに頼らないケースではどうだろうか。これまで、Firefox 3.1b3preをピークに、パフォーマンスが緩やかに落ちていく傾向にあったが、今回調べたところでは、10%弱の性能アップと出た。TraceMonkeyにうまく乗らない処理もあるため、この結果は案外重要だ。
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
Total | 2899.4ms +/- 6.7% | 3148.0ms +/- 3.2% |
V8 Benchmark
次に、V8 Benchmark Suite(version 5)のスコアはどうだろうか。
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
Score | 463 | 362 |
Richards | 1406 | 1249 |
DeltaBlue | 145 | 116 |
Crypto | 962 | 643 |
RayTrace | 342 | 259 |
EarleyBoyer | 365 | 341 |
RegExp | 256 | 188 |
Splay | 728 | 522 |
3.6 Betaは、性能の向上がはっきりと見て取れる。約28%とSunSpiderよりも差が開いている点は興味深い。JavaScriptチームは、2009年第4四半期の目標として、V8 Benchmarkのスコアを10月1日時点のTrunk比で最低2倍に高めることを掲げており、その成果の一部がFirefox 3.6に取り込まれているものとみられる。おそらく、RCのコードフリーズまでに、もう少し追加されるだろう。
Dromaeo
Dromaeo(JavaScript Performance Testing)は、Mozilla謹製の重量級ベンチマークだ。JavaScriptエンジンの真価が問われる。最終結果のみ表に載せておくが、今回からは、詳細を比較表から確かめられるようにした。
Firefox 3.6 Beta | Firefox 3.5.4 | |
---|---|---|
Total | 108.88runs/s ±3.00% | 82.94runs/s ±3.16% |
3.6 Betaの総合スコアが約31%高く、これはPGOの効果だけでは説明がつかない。TraceMonkeyの強化が影響していることは間違いないだろう。Firefox 3.5のリリースから約4か月ほどが経過したが、この間の開発成果としては立派なものだ。
総合評価
Firefox 3.6 Betaは、ほとんどのケースで、Firefox 3.5.4よりも高速である。そのことは、ページの読み込み速度とJavaScriptの処理速度において目立っており、とくにJavaScriptに関しては、開発チームが20%の向上としているのに対し、実はそれ以上かもしれないと思わせる。
たしかに、Firefox 3.0から3.5へとバージョンアップしたときは、1.5〜2倍もパフォーマンスがよくなっていたから、それと比べると見劣りするように感じるかもしれない。
しかし、jit.chromeの設定がデフォルトでtrueになったり、interruptible reflowと呼ばれる機能が投入されたりしたことでUIの応答性が高まっているし、places.sqliteの自動vacuumが加わってパフォーマンスの低下も抑えられている。こうした点も併せて考慮すべきである。
従来は、ひたすらコンテンツの処理速度を引き上げるところに力を注いできたが、Firefox 3.6では、せっかくのプラス要素を相殺してしまうような個所も同時に改良している。これによって、ベンチマークの結果以上に速さを体感できることだろう。