Mozilla Flux

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

Firefox 3.5 RC1はPreviewの安定版である

結論から言おう。パフォーマンスの点で、Firefox 3.5 RC1はFirefox 3.5 Previewとほとんど差がない。『Firefox 3.5はFirefox 3からどの程度速くなったのか』で扱ったテストセットを実施した結果、そう判明した。

テストに使用したのは、Firefox 3.5 RC1とコードベースが共通の、Shiretoko Nightly(3.5pre, ID:20090612044217)だ。これをFirefox 3.5 Preview(3.5b99, ID:20090605162636)と比較したわけだが、コンテンツが変動するものを除き、数値は上記『〜どの程度速くなったのか』から引用している。

また、予告していたとおり、Safari 4正式版(AppleWebKit/530.17)も比較対象とした。こちらはBeta版のテストを『過去最速のFirefox、しかしアピールすべきは総合力』で行っており、どこまで進化したかが見ものだ。

では、順次パフォーマンスを検証していこう。なお、各WebブラウザはWindows Vista SP2(32bit版)上で動作させている。

ロード時間

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

このテストだけは、表示するコンテンツが日々変わっていくので、Firefox 3.5 Previewについても再計測している。

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

Shiretoko 3.5 Preview Safari 4
初回 4.81秒 4.77秒 5.50秒
平均 1.31秒 1.43秒 1.95秒

ShiretokoとFirefox 3.5 Previewを比較すると、初回読み込みの時間にほとんど差はなく、平均読み込み時間だとわずかにShiretokoが上という結果になった。ただ、測定誤差のレベルであり、速くなったとまではいえない。

対するSafari 4は、Firefox 3.5にやや劣るものの、Beta版の頃と比べると、平均読み込み時間が短縮されているのが見て取れる。

次に、Yahoo!ニュースで同様の計測を行ってみた。

Shiretoko 3.5 Preview Safari 4
初回 4.58秒 4.87秒 4.31秒
平均 2.61秒 2.57秒 1.74秒

Shiretokoは、初回読み込みで3.5 Previewに多小差を付けている。スクリプトの処理がわずかに向上したとも考えられるが、平均では差がないので、これも測定誤差の可能性が高い。

他方、Safari 4の速さには目を見張るものがある。興味深いことに、このパフォーマンス傾向は、Firefox 3.5を上回る点も含め、Google Chrome 2.0(以下Chrome)と共通だ。WebKitが得意とするレンダリング対象に、ページがうまく当てはまっているのだろう。

レンダリング時間

Test rendering time』で巨大なテーブルを処理させ、各Webブラウザのレンダリング能力を調べてみた。以下の表の「初回」および「平均」の意味は、ロード時間のケースと同じである。ただし、平均を出す際、ロードの間隔はとくに設定していない。

Shiretoko 3.5 Preview Safari 4
初回 7.0569秒 6.5260秒 2.3250秒
平均 6.1106秒 6.0642秒 1.3896秒

初回読み込みは通信状況の影響を受けるので、多少の誤差はやむを得ない。ただ、平均時間でもShiretokoが3.5 Previewより少し遅いのは気になるところだ。

その一方、Safari 4は非常に成績が良く、平均タイムでいうと、Chromeよりも短時間でテストを終えているほどだ。レンダリング能力の高さが窺える。

ダイナミックコンテンツ

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

Shiretoko 3.5 Preview Safari 4
フレームレート 8.63 - 9.65fps 8.86 - 9.84fps 9.76 - 10.11fps

Shiretokoは3.5 Previewよりも少しパフォーマンスが落ちているようだ。3.5 Beta 4が「8.91 - 10.18fps」だったので、これと同じ水準を維持できなかったのは残念である。

Safari 4はFirefox 3.5と大差ないレベルだが、下限の数値が高く、安定している。Chromeがこのテストを苦手としていたことを踏まえると、なかなかの好成績というべきだろう。

スクロール

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

Shiretoko 3.5 Preview Safari 4
1回目 4647ms 4629ms 8769ms
2回目 4671ms 4611ms 8752ms
3回目 4604ms 4611ms 8713ms
CPU負荷 52% 55% 60%

Shiretokoと3.5 Previewの所要時間は同じなので、パフォーマンスは同一。ただ、ShiretokoのCPU負荷は少しだけ下がったようだ。

Safari 4の成績は芳しくない。Chromeが最高のパフォーマンスを叩き出すこのテストで、Firefox 3よりも遅い結果になっている。実は、Beta版でも同じ現象が発生していた。正式版で問題が修正されなかったのは、何かエンジンの深い部分と関わっているからなのか。

JavaScriptベンチマーク

ここからは、JavaScriptエンジンの性能をチェックしていく。利用したベンチマークは、SunSpider、V8、Dromaeoの三つである。なお、ShiretokoおよびFirefox 3.5の設定は、断らないかぎりjit.contentがtrue、jit.chromeがfalse(デフォルト)となっている。

SunSpider

最初に、SunSpiderベンチマークの成績を比較してみよう。

Shiretoko 3.5 Preview Safari 4
Total 2049.4ms +/- 0.8% 2052.0ms +/- 0.7% 1281.6ms +/- 1.2%
3d 284.8ms +/- 1.3% 291.6ms +/- 1.7% 298.2ms +/- 3.2%
access 293.0ms +/- 2.7% 293.0ms +/- 1.1% 122.4ms +/- 3.3%
bitops 63.8ms +/- 2.5% 63.4ms +/- 2.2% 59.2ms +/- 1.8%
controlflow 96.2ms +/- 0.6% 97.6ms +/- 1.5% 5.6ms +/- 12.2%
crypto 104.2ms +/- 1.0% 105.0ms +/- 2.2% 90.0ms +/- 1.4%
date 305.0ms +/- 1.8% 300.4ms +/- 1.1% 126.8ms +/- 0.4%
math 98.0ms +/- 1.6% 97.0ms +/- 0.9% 182.8ms +/- 1.2%
regexp 131.6ms +/- 3.9% 142.8ms +/- 11.6% 39.0ms +/- 2.3%
string 672.8ms +/- 0.2% 661.2ms +/- 1.1% 357.6ms +/- 0.7%

Shiretokoと3.5 Previewの数値は見事なまでに近い。対するSafari 4は圧倒的なスピードだ。Chromeが「1223.4ms +/- 2.1%」だったので、ほぼそれに匹敵する。また、Beta版の成績である「1651.0ms +/- 0.2%」からの伸びも著しい。Nitroエンジンは大きく改良されたことがわかる。

もう一つ、Firefox 3.5でTraceMonkeyを使わないケース(jit.contentもfalse)も見ておこう。信頼区間に差があるので一概には言えないが、Shiretokoは3.5 Previewよりも成績が落ち込んでいる。Beta 4が「5821.2ms +/- 0.7%」だったので、これと比べると明らかな悪化だ。また、過去最高のケース(3.1b3pre, ID:20090227033431)を持ってくると、低下ぶりが目立つ。

Shiretoko 3.5 Preview 3.1b3pre
Total 6047.8ms +/- 0.9% 5999.2ms +/- 0.2% 5655.4ms +/- 0.7%

V8

次に、V8 Benchmarkで比較してみよう。

Shiretoko 3.5 Preview Safari 4
Score 199 196 1091
Richards 751 737 1479
DeltaBlue 53.1 52.6 1172
Crypto 281 313 1568
RayTrace 152 152 1193
EarleyBoyer 181 179 1569
RegExp 110 110 481
Splay 367 273 751

Shiretokoと3.5 Previewに差は見られない。Safari 4はここでも強かった。Chromeが1451なのでそれには及ばないものの、Firefox 3.5とは桁違いの数字が並んでいる。なお、同じWebKit系とはいえ、搭載しているJavaScriptエンジンは別々だから、SunSpiderのように僅差でなくても不思議はない。

Dromaeo

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

Shiretoko 3.5 Preview Safari 4
Total 35.73runs/s ±3.55% 35.43runs/s ±3.65% 61.35runs/s ±2.27%

Shiretokoと3.5 Previewはここでも誤差程度の差しかない。ちなみに、Beta 4の「34.79runs/s ±3.66%」と比べると、約3%弱の向上である。

Safari 4とは大差がついた。Chromeの「71.76runs/s ±4.70%」には及ばないが、Beta版が「51.21runs/s ±2.31%」だったことからすれば、充分に高速化されている。

なお、CNET Japanの『「Safari 4」の正式版--ベータ版からの変更点とパフォーマンス:スペシャルレポート』を見ると、DromaeoでSafari 4が175.06runs/s、Chromeが67.92runs/sで、Firefox 3.5 Previewは48.48runs/sだったとしているが、あり得ない。SafariとFirefoxの成績に照らしてみると、Chromeはテスト中に何かトラブルがあったと考えるべきだろう。

総評など

Firefox 3.5 RC1と同じコードベースのShiretoko Nightlyは、Firefox 3.5 Previewとかなり似たようなベンチマークの成績を出した。一部のテストでは若干の低下もみられたが、これがPreviewリリース後の修正による影響か、測定誤差なのかは判断が難しい。

ただ、不具合があったから修正したわけで、その分安定性が増していると考えられる。かつてTraceMonkeyはバグの宝庫で、潰しても潰しても次から次へとバグが発見され、モグラ叩きのような様相を呈していた。それをあらかた潰し終えたのが今の状況だ。アドオンの互換性という難題を抱える中、JavaScriptチームは良い仕事をしたと思う。

他方、Safari 4はBeta版からパフォーマンスを大きくアップさせ、動作も安定したようだ。とくにJavaScriptの処理に関してはかなりのレベルに達しており、TraceMonkeyがNitroエンジンに追いつくのは容易ではないだろう。

とはいえ、スピードだけを比べたときは、なおChromeが上回っているから、世界最速を名乗るのは不適当というほかない。加えて、かなり改善されたとはいえ、Flashとの相性の悪さは残っている。Flashを使ったコンテンツがページ内にあると、CPU負荷が目立って高まり、読み込みも遅くなる。したがって、たとえばYouTubeを見るのには、Safari 4よりもFirefox 3.5やChromeのほうが向いている。

Firefox.nextに目を向けると、JavaScriptチームは既に増員を図って、パフォーマンスの向上に向けた下地慣らしを始めた。また、グラフィックスのハードウェアアクセラレーションや起動プロセスの改善など、サポートするOSを絞ってでもスピードを引き上げようと計画を練っている。その成果は実に楽しみだが、残念ながら製品として結実するのは、早くても10か月後になりそうだ。それまでChromeやSafariに大きく水をあけられた状態で耐えしのぐ必要がある。ここからはマーケティングの出番かもしれない。