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だ。充分に魅力的と思うが、いかがだろうか。