Mozilla Flux

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

Firefox 3.5はFirefox 3からどの程度速くなったのか

Firefox 3.5 Preview(3.5b99, ID:20090605162636)がリリースされたばかりだが、そのコードはほぼ完成に近く、性能面でPreviewと正式版の差は小さいと考えられる。今回はこのプレビュー版を使ってパフォーマンスを検証したい。

比較対象の第一グループとして、Firefox 3.5 Beta 4(ID:20090423204732)とFirefox 3.0.10(Gecko/2009042316)を用意した。従来は開発版であるShiretoko Nightlyをベースに計測していたが、リリース版どうしで速さを比べるのも悪くない。また、大多数のユーザーの関心は、Firefox 3と比較してどうかという点に絞られよう。そこで、現時点におけるFirefox 3の最新版をもってきた。

比較対象の第二グループは、Google Chrome(2.0.172.30, AppleWebKit/530.5)とOpera 10.00 Beta 1(Presto/2.2.15)である。Google Chrome(以下Chrome)は2.0正式版がリリースされたため、その最新安定版とFirefox 3.5を比較するのが適当と判断した。もう一つのOperaは、Beta版に達したので検証の対象に含めた。Safari 4.0も正式版がリリースされたが、テストが間に合わないので、チェックはFirefox 3.5 RC1がコードフリーズした際に行いたい。

なお、各WebブラウザはWindows Vista SP2(32bit版)上で動作させている。

ロード時間

Webブラウザのパフォーマンスにとって重要な指標であるページの読み込み速度を、WebWaitで計測してみた。以下の表で「初回」とあるのは、ディスクキャッシュをクリアした状態で、ブラウザの起動直後に1回だけ指定ページを読み込ませた場合を指す。「平均」は、2〜4回目の読み込み時間(ロードの間隔は10秒)を平均したもの。両者の違いは、キャッシュを利用するかどうかだ。

まず、はてなのフロントページを指定したケースの結果を見てみよう。

3.5 Preview 3.5 Beta 4 3.0.10
初回 5.10秒 5.70秒 7.02秒
平均 1.96秒 2.09秒 2.86秒

Firefox間の比較では、キャッシュの有無にかかわらず、Firefox 3.5 Previewが最も高速だった。Firefox 3よりも明らかに速くなっている。とくに初回の読み込みで差が大きく、体感レベルでの影響も大きい。

第二グループと比較した場合はどうだろうか。

3.5 Preview Chrome 2.0 Opera 10
初回 5.10秒 5.99秒 9.16秒
平均 1.96秒 2.63秒 2.88秒

Firefox 3.5 PreviewはChrome 2.0よりも高速という結果になった。スピードといえばChromeといった風潮もあるようだが、読み込み時間を比べるかぎり、ChromeがFirefox 3.5に負けるシーンも存在する。

一方、Opera 10は初回読み込みの際に何かが引っかかっている印象だ。キャッシュを使えばChromeに近いレベルになるのだから、ポテンシャルは高いはずで、改良の余地が大きそうである。

次に、対象ページを変えて、Yahoo!ニュースで同様の計測を行った結果を一気に見る。

3.5 Preview 3.5 Beta 4 3.0.10
初回 4.66秒 4.05秒 7.14秒
平均 2.65秒 2.61秒 2.81秒

3.5 Preview Chrome 2.0 Opera 10
初回 4.66秒 4.37秒 7.07秒
平均 2.65秒 1.97秒 3.10秒

安定して高速なのはChromeだった。対するFirefox 3.5 PreviewはBeta 4よりも劣る結果となった。不思議な現象だが、投機的解釈(Speculative Parsing)機能に手が加えられたことが影響しているのかもしれない。

いずれにせよ、Firefox 3.5はFirefox 3よりも間違いなく読み込みが速くなった。他方、Opera 10はボトルネックの部分が強く足を引っ張っていて、本来の力を出し切れていないようだ。

レンダリング時間

レンダリング能力はWebブラウザの基本性能の一つであり、当然パフォーマンスに影響する。『Test rendering time』で巨大なテーブルの処理をチェックしてみよう。以下の表の「初回」および「平均」の意味は、ロード時間のケースと同じである。ただし、平均を出す際、ロードの間隔はとくに設定していない。

3.5 Preview 3.5 Beta 4 3.0.10
初回 6.5260秒 6.5419秒 5.1150秒
平均 6.0642秒 6.3436秒 4.9259秒

興味深いことに、Firefox 3.5 PreviewはBeta 4よりも高速化したものの、Firefox 3と比べるとスピードが落ちている。エンジン内の処理内容が複雑化したためかもしれないが、この点はFirefox.nextで改善すべきだろう。

3.5 Preview Chrome 2.0 Opera 10
初回 6.5260秒 1.9939秒 4.9589秒
平均 6.0642秒 1.6859秒 3.6752秒

抜群の速さを見せたのがChromeだ。Operaも決して悪くはないが、Chromeがあまりにも速すぎる。WebKitの強さが発揮されたテストといえる。

ダイナミックコンテンツ

HTML - DHTML Test』は、リアルタイムでコンテンツを変化させ、その描画性能を計測してくれる。ブラウザエンジンの各パートがうまく連携しないと、高いフレームレート(fps)が出ない。結果を一気に見てみよう。

3.5 Preview 3.5 Beta 4 3.0.10
フレームレート 8.86 - 9.84fps 8.91 - 10.18fps 7.64 - 8.46fps

3.5 Preview Chrome 2.0 Opera 10
フレームレート 8.86 - 9.84fps 7.61 - 8.25fps 15.59 - 19.23fps

Opera 10が圧倒的に高速だった。ダブルスコアの大差をつけており、得意な場面にヒットするとかなりの性能を発揮することがわかる。意外なことにChromeは振るわなかった。部分単位では最強に思えるChromeにも欠点はあったわけだ。

Firefox内では、3.5がFirefox 3から順当な伸びを見せていると評価できるが、3.5 Beta 4が最高成績というのはやや寂しい。とはいえ、Chromeを上回っていることは確かで、読み込み時間の差も投機的解釈機能の有無だけが原因というわけではなさそうだ。

スクロール

スタイルシートで背景画像を固定したWebページにおけるスクロール性能と、CPU負荷をテストケースを使って計測した。なお、「CPU負荷」は、タスクマネージャに示されたCPU使用率の最高値である。

3.5 Preview 3.5 Beta 4 3.0.10
1回目 4629ms 7106ms 7715ms
2回目 4611ms 7162ms 7868ms
3回目 4611ms 7162ms 7865ms
CPU負荷 55% 65% 35%

3.5 Preview Chrome 2.0 Opera 10
1回目 4629ms 4272ms 4814ms
2回目 4611ms 4313ms 4992ms
3回目 4611ms 4376ms 4902ms
CPU負荷 55% 67% 67%

最近のWebブラウザはCPUパワーをふんだんに使って処理を加速させているようだ。Chromeが最速だが、CPU負荷は大きい。最も遅かったFirefox 3だけはっきりと負荷が小さいのは興味深い。

Firefox 3.5 Previewは、3.1 Beta 3のころのキビキビした動き(4682ms、負荷54%)を取り戻した。Opera 10はコストパフォーマンスの面でやや分が悪い。

JavaScriptベンチマーク

ここからは、JavaScriptエンジンの性能をチェックしていく。利用したベンチマークは、いつもどおりSunSpider、V8、Dromaeoの三つにとどめた。FuturemarkのPeacekeeperは正式版になったが、テスト内容の詳細がはっきりせず、純粋なJavaScriptベンチマークとして扱うには躊躇を覚えるので見送った。

なお、Firefox 3.5(Preview、Beta 4)の設定は、断らないかぎりjit.contentがtrue、jit.chromeがfalse(デフォルト)である。

SunSpider

まずは、Firefox間でSunSpiderベンチマークの成績を比較してみる。

3.5 Preview 3.5 Beta 4 3.0.10
Total 2052.0ms +/- 0.7% 2139.4ms +/- 1.9% 6653.0ms +/- 0.8%
3d 291.6ms +/- 1.7% 311.6ms +/- 0.5% 851.0ms +/- 3.7%
access 293.0ms +/- 1.1% 298.4ms +/- 1.7% 1157.4ms +/- 1.4%
bitops 63.4ms +/- 2.2% 66.6ms +/- 2.8% 1041.0ms +/- 0.1%
controlflow 97.6ms +/- 1.5% 97.2ms +/- 0.6% 98.8ms +/- 1.6%
crypto 105.0ms +/- 2.2% 116.8ms +/- 3.3% 439.8ms +/- 0.5%
date 300.4ms +/- 1.1% 314.8ms +/- 1.7% 446.2ms +/- 1.2%
math 97.0ms +/- 0.9% 98.8ms +/- 1.4% 821.6ms +/- 2.2%
regexp 142.8ms +/- 11.6% 146.6ms +/- 16.5% 420.4ms +/- 1.8%
string 661.2ms +/- 1.1% 688.6ms +/- 0.8% 1376.8ms +/- 2.6%

誤差を考慮に入れても、Firefox 3.5 PreviewはBeta 4よりも速くなった。「2052.0ms +/- 0.7%」は、筆者の環境では過去最高の数字だ。また、Firefox 3と比べて3倍以上という良い結果で、TraceMonkeyの面目躍如といったところ。

では、第二グループと比較しよう。

3.5 Preview Chrome 2.0 Opera 10
Total 2052.0ms +/- 0.7% 1223.4ms +/- 2.1% 7981.2ms +/- 4.5%
3d 291.6ms +/- 1.7% 197.0ms +/- 8.6% 966.2ms +/- 0.6%
access 293.0ms +/- 1.1% 99.4ms +/- 2.1% 1390.4ms +/- 1.3%
bitops 63.4ms +/- 2.2% 78.2ms +/- 1.3% 1384.0ms +/- 0.3%
controlflow 97.6ms +/- 1.5% 4.4ms +/- 15.5% 121.8ms +/- 1.1%
crypto 105.0ms +/- 2.2% 81.4ms +/- 9.8% 506.8ms +/- 0.5%
date 300.4ms +/- 1.1% 164.6ms +/- 2.4% 484.6ms +/- 0.6%
math 97.0ms +/- 0.9% 115.2ms +/- 1.4% 797.0ms +/- 0.4%
regexp 142.8ms +/- 11.6% 27.2ms +/- 5.0% 188.2ms +/- 0.9%
string 661.2ms +/- 1.1% 456.0ms +/- 0.6% 2142.2ms +/- 16.1%

Chromeの圧勝で、Operaにはかなり厳しい結果となった。Chromeも1.0のころは、TraceMonkeyでも勝負になるレベルだったのだが、V8エンジンが大幅に改良された結果、現在の差がついてしまった。

OperaのJavaScriptエンジンはJITを採用していないので、どうしてもパフォーマンスが劣る。Internet Explorer 8よりは上だが、Firefox 3にさえ勝てないのはやや意外だった。

最後に、Firefox 3.5でTraceMonkeyを使わないケース(jit.contentもfalse)を見る。残念ながら、じょじょに悪化している。筆者の調べで最も成績の良かったShiretoko Nightly(3.1b3pre, ID:20090227033431)を加えて比較すると、次のようになる。

3.5 Preview 3.5 Beta 4 3.1b3pre
Total 5999.2ms +/- 0.2% 5821.2ms +/- 0.7% 5655.4ms +/- 0.7%

Firefox 3を上回るパフォーマンスではあるものの、無視できないレベルで落ち込んでおり、不安が残った。TraceMonkeyのスコープから外れた処理は通常のエンジン(SpiderMonkey)が担当することになるため、性能が低いと実環境では不利になる。Firefox.nextではどのように対処するのだろうか。

V8

V8 Benchmarkはバージョン4になり、項目が増えた。まずはFirefoxどうしの比較から。

3.5 Preview 3.5 Beta 4 3.0.10
Score 196 160 119
Richards 737 781 98.4
DeltaBlue 52.6 47.1 114
Crypto 313 92.2 56.3
RayTrace 152 140 120
EarleyBoyer 179 175 157
RegExp 110 114 87.3
Splay 273 287 324

Firefox 3.5 Previewが最もいい成績になっているけれども、注意してほしいのは、Beta 4のCryptoの値が計測によって変動する点だ。Beta 4とコードベースが共通のShiretoko Nightly(3.5b5pre, ID:20090424045037)では、Cryptoが268で総合スコアも175だった。ただ、それを考慮しても3.5 Previewは一歩進んでいる。

Firefox 3との差は、TraceMonkeyの効果なのだが、DeltaBlueとSplayの各項目でJITが効いていないほうが速い状況がある。ここも将来改善が必要だ。

次に、第二グループとの比較。

3.5 Preview Chrome 2.0 Opera 10
Score 196 1451 111
Richards 737 1361 77.5
DeltaBlue 52.6 1170 85.2
Crypto 313 1419 54.5
RayTrace 152 1702 217
EarleyBoyer 179 2155 370
RegExp 110 524 62.1
Splay 273 3125 117

Chromeが抜群に強く、OperaはここでもFirefox 3に一歩劣る。やはりJITなしだとつらいようだ。

Firefox 3.5は一貫してこのベンチマークを苦手としてきたが、Firefox.nextでは真正面から取り組まざるを得ないと考える。現実にGoogleが提供するWebサービスは多くのユーザーに頻繁に利用されており、Chromeはそれを効率よく処理できるように設計されているはず。そのChromeの最良の部分を数値化するのがこのV8ベンチマークだとすると、結局ここでの総合スコアは、Googleのサービスへの適合度を意味する。Firefoxが実環境でのパフォーマンスを重視するとしても、この点は無視できない。

Dromaeo

Dromaeoは、三つのベンチマークの中で最もヘビーで、それだけにエンジンの性能が問われるテストである。Firefox間の比較は次のとおり。

3.5 Preview 3.5 Beta 4 3.0.10
Total 35.43runs/s ±3.65% 34.79runs/s ±3.66% 20.16runs/s ±2.61%

Firefox 3.5 Previewは、Beta 4から意外にもほとんど伸びなかった。Firefox 3と比べると高速化されていることは一目瞭然だが、3.5 Beta 4のリリース以降、パフォーマンスのチューニングよりも処理の正確さやクラッシュの防止に重点が置かれたものと推測される。

それはそれで悪くないけれども、問題はライバルたちが待ってくれないことにある。

3.5 Preview Chrome 2.0 Opera 10
Total 35.43runs/s ±3.65% 71.76runs/s ±4.70% 20.27runs/s ±2.74%

筆者がこれまで計測してきたところでいうと、Chromeは60ポイントに満たない成績であまり変化がなかった。ところが、今回いきなり70ポイントを超える数値を叩き出した。先ほど述べたとおりDromaeoはヘビーなテストだから、ここでの差は、重いWebアプリケーションを動かす際に効いてくる。

たとえば、報道によると、「今後1年間でGoogle Docsは劇的に進化」するそうだ。こうした流れが定着すれば、JavaScriptエンジンの性能はこれまで以上に重要になってこよう。

その意味で、OperaはCarakenのコードネームで呼ばれるJIT対応エンジンを一刻も早く開発すべきである。IEのような強固な基盤がない以上、このゲームから降りることは、デスクトップのシェアを失うことに直結するからだ。

Firefoxについても同様で、一時縮まっていたChromeとの差が再び開いた点に目をつぶることは許されない。TraceMonkeyがV8に追いつくのは難しいとしても、これ以上離されないことが重要である。

総評など

Firefox 3.5 Previewは、一部微妙なところもあるものの、おおむねBeta 4より速くなっている。ただ、その伸びは小さなものにとどまる。

これに対し、Firefox 3との比較で見たときは顕著な差がある。Firefox 3.5は全般的にFirefox 3から高速化を遂げており、違いを体感できることは確実だ。

しかし、MozillaはFirefox 3.5の速さを「Firefox 3の約3倍、Firefox 2の約10倍」と吹聴しているようで、これはいただけない。SunSpiderの結果だけを比べればそのようになるだろうが、いくら環境に依存するとはいえ、総合性能で3倍の差はあり得ない。ベンチマークの結果から見て、1.5倍〜2倍といったあたりが妥当なところだろう。

もちろん、それだけ違えば相当なものだし、加えてベンチマークに表れないUIの応答性や、スマートロケーションバーの処理速度なども着実に向上しているので、速さを感じる場面には事欠かない。唯一の欠点は起動速度で、こればかりはFirefox.nextでの改良を待たねばならない。

場面によってはChromeに匹敵するパフォーマンスを発揮し、豊富なアドオンなど独自の強みももつWebブラウザ。それがFirefox 3.5だ。充分に魅力的と思うが、いかがだろうか。