Mozilla Flux

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

意外な高速化を遂げたFirefox 10

Firefox 10の主な新機能といえば、アドオンの互換性確認の柔軟化やユーザーインターフェイスの改良、Web開発者向けツールの拡充などが中心で、処理の高速化はあまり意識されていない。Firefox 9の型推論(Type Inference)のように目立ったところがないからだろう。だが、ベンチマークを用いて性能を測ってみると、けっこう改善されていることがわかる。

実際の数字を見てみよう。比較対象は、以下のとおりWindows 7 SP1(64bit版)上で動作する32bit版のFirefox 9.0.1とFirefox 10.0。新規プロファイルを初期設定のまま利用し、アドオンはすべて無効化するが、プラグインはShockwave Flash 11.1(r102)だけを有効にした。使用したハードウエアは、CPUがIntel Core i5-2410M 2.30GHz、GPUがIntel HD Graphics 3000、メモリ容量が8.00GBで、Firefoxのハードウェア(HW)アクセラレーションも有効になっている。

  • Firefox 9:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
  • Firefox 10:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0

メモリ使用量

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

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

Firefox 9 Firefox 10
10サイト表示 106.65MB 102.40MB
単サイト表示 48.75MB 44.90MB

10サイト表示、単サイト表示ともにFirefox 10でメモリ使用量が削減されている。また、しばらく使ってみて感じるのだが、現に大量のメモリを使っている場合でもレスポンスが落ちにくい。具体的には、数バージョン前まで、Windowsタスクマネージャーに表示されるメモリ使用量が1GB付近になるとFirefox本体の反応が悪くなっていた。これに対しFirefox 10では、1.5GBくらいメモリを使用してもあまり差が生じない。

ページの読み込み

実環境によるテスト

WebWaitを用いて、指定したWebページを10秒間隔で5回読み込ませた。今回は、対象をYahoo! JAPANのトップページに変え、これだけに絞っている。それなりの容量のHTML文書で、CSSとJavaScriptに加えてFlashオブジェクトも含んでおり、ベンチマーク向きだと判断した。

Firefox 9 Firefox 10
平均値 1.15秒 1.15秒
中央値 0.70秒 1.62秒

平均値は何と同値だった。Firefox 9/10ともに再読込の際に遅くなる回はなく、中央値はFirefox 9が勝っているので、これだけを見るとFirefox 10のほうが分が悪そうである。しかし、本当にそうなのか、次のテストで別の角度からチェックしてみよう。

Navigation Timingによるテスト

Internet Explorer 10 Test Driveに掲載されている多数のテストの1つ、Navigation Timingを利用してみる。Firefox 7からサポートされているNavigation Timingは、Webページをロードするのにかかった時間や状態などを返すAPIだ。上記テストは、このAPIを用いてWebブラウザの読み込み性能を計測するもので、ここでは差がわかりやすいように5MBのデータをダウンロードした場合の結果を示す。

Firefox 9 Firefox 10
navigation 11247ms 10593ms
fetch 218ms 219ms

処理が完了するまでの時間はFirefox 10のほうが短いのに対し、ページの取得にかかる時間はほぼ同じ。つまりそれだけ処理性能が向上しているわけだ。

動的ページの処理

GUIMark 2から、Vector Charting TestText Column Testをピックアップ。

Vector Charting Test

Firefox 9 Firefox 10
fps 21.43 22.16

目視では違いを見いだせず、数値は今回も測定誤差だろう。

Text Column Test

Firefox 9 Firefox 10
fps 53.1 51.85

前回Firefox 9を調べたときとは逆に、目視ではFirefox 10が若干遅い。Firefox 8の水準に戻った感じだ。

Canvasの描画

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

Firefox 9 Firefox 10
Total Score 2.89 3.02

実は一番驚いたのがこの結果で、当分横ばいだろうと思っていたらいきなりスコアが上がった。該当バグは見つけられなかったが、どこかでボトルネックが修正されたのかも。

HTML5/JavaScript総合

enchant.js

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

Firefox 9 Firefox 10
Score 6352 7183

スコアが大きく伸びており、Firefox 7でマークしていた7000台を回復した。ただ、手放しでは喜べない。Firefox 8から発生している処理落ちは、なお残っている。それでもこのスコアになっているのは、通常動作の部分でパフォーマンスアップを達成しているからだ。目で見てはっきりわかるくらいにキビキビとしている。これで処理落ちの点がなくなれば完璧なのだが……。

Peacekeeper

FuturemarkのPeacekeeperは、リニューアルによって、PCだけでなくタブレットやスマートフォンも対象とするようになり、プラグイン不要のシンプルなベンチマークへと生まれ変わった。

Firefox 9 Firefox 10
Points 1715 1972

総合ポイントを15%も積み増したのは立派な結果といえよう。詳細を眺めても個別のスコアでとくに落ち込んだ個所は見当たらず、Webブラウザ全体としての調整がうまくいっている。

JavaScript処理

代表的なJavaScriptベンチマークを利用して処理能力を測る。Firefox 9で大幅に強化された個所だけに、テスト前はそれほど差がないだろうと予想していた。

SunSpider

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

Firefox 9 Firefox 10
Total 157.1ms +/- 1.0% 158.6ms +/- 2.2%

結果は誤差のレベル。もはやこのテストは多少のエンジンの改良には反応しなくなっている。

V8 Benchmark

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

Firefox 9 Firefox 10
Score 6735 6876

小幅ながらもFirefox 10のスコアが改善された。個別の項目では、RayTraceの値が3513から3740へ、EarleyBoyerの値が8299から8849へ、RegExpの値が1435から1612へとそれぞれ向上している。

Dromaeo

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

Firefox 9 Firefox 10
Total 522.09runs/s ±1.98% 529.79runs/s ±1.91%

このテストでも総合スコアが上がっている。個別の項目だと3D Raytraceの改善が目立っており、V8 Benchmarkの結果とも合わせると、エンジンに補強が加えられたのは間違いなさそうだ。

Kraken

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

Firefox 9 Firefox 10
Total 3338.0ms +/- 0.6% 3089.7ms +/- 0.8%
ai 101.5ms +/- 1.7% 100.0ms +/- 1.7%
audio 1032.1ms +/- 1.3% 1061.5ms +/- 1.9%
imaging 1367.4ms +/- 0.5% 1170.9ms +/- 0.6%
json 187.4ms +/- 5.8% 190.0ms +/- 1.5%
stanford 649.6ms +/- 2.8% 567.3ms +/- 1.3%

imagingとstanfordの項目で数値が改善されており、総合スコアでもFirefox 10が勝利を収めた。JITコンパイラの着実な進化を窺わせる。バージョンアップのたびに少しずつスコアが下がり続けるというジンクスも、これで払拭されたとみてよさそうだ。

総合評価

前回、Firefox 9は高速だが処理性能にムラがあるので、Firefox 10での調整に期待するという趣旨のことを書いた。その期待に見事に応えるバージョンアップが行われ、パフォーマンスはおおむね全般的に良くなった。しかも、消費メモリの抑制が進んでいる。法人向け延長サポート版(ESR)の基盤となるにふさわしい仕上がりといえよう。

Firefox 9からのアップデートをためらう理由はない。また、Firefox 3.6.xのサポート終了が具体的な話となってきた(2012年4月24日とアナウンスされている)現在、Firefox 10へのメジャーアップデートも十分に魅力的な選択肢だと思う。使い慣れたアドオンのいくつかを諦めてでも、乗り換えるだけの価値はある。