2009-04-02
TraceMonkeyはトンネルを抜けた
最新のShiretoko Nightly(3.5b4pre,ID:20090401043706)では、一日で82個ものバグが修正されたのだが、うち58個がJavaScriptエンジン関連で、実に7割を占める。
当然パフォーマンスに影響すると考えられたので、テストしてみた。その結果判明したのは、TraceMonkeyは崩れていたバランスが元に戻り、以前の力強さが蘇ったということだ。
『TraceMonkeyのチューニングは難しい』で記述したデータと順番に比較してみる。まずは、定番のSunSpiderベンチマークから。設定は、jit.contentがtrueで、jit.chromeがfalseである。
| 20090401 | 20090303 | 20090227 | |
|---|---|---|---|
| Total | 2176.2ms +/- 0.7% | 2861.0ms +/- 0.8% | 2187.4ms +/- 1.5% |
| 3d | 311.8ms +/- 0.7% | 482.8ms +/- 4.1% | 291.4ms +/- 1.4% |
| access | 313.0ms +/- 2.4% | 554.6ms +/- 0.8% | 291.8ms +/- 3.0% |
| bitops | 71.2ms +/- 2.3% | 76.8ms +/- 2.1% | 62.8ms +/- 1.7% |
| controlflow | 99.2ms +/- 1.0% | 98.8ms +/- 0.6% | 99.4ms +/- 4.7% |
| crypto | 115.8ms +/- 2.6% | 343.0ms +/- 1.8% | 133.0ms +/- 9.4% |
| date | 315.8ms +/- 3.5% | 287.2ms +/- 2.7% | 285.6ms +/- 3.1% |
| math | 98.4ms +/- 2.9% | 98.2ms +/- 0.6% | 101.0ms +/- 9.1% |
| regexp | 128.6ms +/- 5.9% | 148.4ms +/- 6.8% | 147.2ms +/- 13.4% |
| string | 722.4ms +/- 1.4% | 771.2ms +/- 0.8% | 775.2ms +/- 1.9% |
「2176.2ms +/- 0.7%」というスコアは、筆者の環境では過去最高だ。『強化されたPGOの効果は?』で取り上げたShiretoko Nightly(3.1b4pre, ID:20090310050816)は、「2877.8ms +/- 13.3%」だったので、ここから見ても大きな改善だが、信頼区間からみた不安定さがなくなったことのほうがむしろ重要だ。PGOによるチューニングとの相性も良くなったわけで、心強い。
ただ、JITを完全にオフにした場合を調べてみると、スコアは回復していない。こちらも改善されることが望ましいが、TraceMonkeyがメインになるのは間違いないので、優先順位が低いのはやむを得ない。
| 20090401 | 20090303 | 20090227 | |
|---|---|---|---|
| Total | 5790.4ms +/- 0.8% | 5779.2ms +/- 0.4% | 5655.4ms +/- 0.7% |
SunSpiderのスコアが向上したからといって、他のベンチマークの成績が元の木阿弥になるのでは、TraceMonkeyが改良されたとはいえない。そこで、例によってV8やDromaeoでも調べてみた。
まずは、V8から。総合スコアはわずかに落ちたが、誤差の範囲にも見える。少なくとも、以前のように100を切るような事態にはなっていない。
| 20090401 | 20090303 | 20090225 | |
|---|---|---|---|
| Score | 138 | 141 | 71.0 |
| Richards | 131 | 142 | 148 |
| DeltaBlue | 55.1 | 66.3 | 12.2 |
| Crypto | 326 | 343 | 36.8 |
| RayTrace | 150 | 136 | 105 |
| EarleyBoyer | 159 | 185 | 154 |
| RegExp | 121 | 97.4 | 119 |
Dromaeoではどうだろう。こちらは総合力が問われるので、成績が下がるのは好ましくないところだったが、ちゃんとスコアを維持している。
| 20090401 | 20090303 | 20090225 | |
|---|---|---|---|
| Total | 29.85runs/s ±4.38% | 29.10runs/s ±3.77% | 11.17runs/s ±5.46% |
まとめると、V8やDromaeoのスコアを保ったまま、SunSpiderのスコアだけがアップし、過去最高を記録した。JavaScriptチームの努力が実ったといえるだろう。Firefox 3.1 Beta 3のコードフリーズ直前に入った修正で、V8とDromaeoのスコアは大幅に上がっていた。今回の修正によって、そこにSunSpiderの向上分がストレートに乗る形となった。
さらにいえば、Trunkでは修正されたJavaScriptのバグについて、まだまだShiretokoに反映されていないものは多い。また、未解決のP1 Blockerも残っている。Firefox 3.5 Beta 4のコードフリーズまでに、SunSpiderのスコアは今回よりも数%程度良くなることだろう。
Firefox 3.5 Beta 4は4月下旬に延期、Beta 5を追加へ
(09/05/15追記)
この予測は外れた。『速報:Firefox 3.5 RC1のスケジュールが正式発表』参照。原文を読み誤り、分析も誤ったのでどうしようもない。自らの不明を恥じるばかりだ。
今週のFirefox Product Delivery Meeting(2009-04-01実施)より。なお、日付は米国太平洋夏時間(PDT)を基準にしているので、日本時間とはずれる。
厳密にはまだ提案の段階だが、Firefox 3.5 Beta 4のリリースが延期される可能性が非常に高まってきた。現在の開発ペースでは、P1 Blockerと呼ばれる最優先に潰すべきバグでさえ、4月6日のコードフリーズまでに処理が間に合わない。
新しいスケジュール案では、4月15日を新しいコードフリーズ期限とし、この期間内にP1バグをすべて片付け、P2の処理はBeta 5に回す予定だ。Beta 5はBeta 4と同様に短い間隔でのリリースを目指すものとなる。るのが一つの選択肢となっている。
QA(品質テスト)の開始はコードフリーズから48時間後で、QAには5営業日を費やすという。カレンダーを見ると、土日を挟むので、4月17日の遅い時間にQAを開始できたとしても、完了は4月24日になりそうだ。よってこの日をリリース日の最有力候補としておく。
(同日追記)
dynamisさんのご指摘を受けて、誤りを訂正する。要旨に記載されているのは、1)4月15日への延期「または」2)4月6日にコードフリーズしてBeta 5を投入のどちらかだ。両方ではない。
読み間違えたが、分析そのものは通用するので残す。筆者としては、Beta 5が投入される可能性が高いと考える。4月15日までコードフリーズを延ばしてP1 Blockerを潰しても、P2の数は多く、P3も含めた残りの全BlockerをRCに回すのはリスクが高すぎるからだ。
そして、筆者が当初書いた内容のとおり、Beta 4を延期しつつBeta 5を出す可能性も、議論の進み具合によってはありうる。なぜなら、P1が残ったままBeta 4をリリースするのはいかにも中途半端だからだ。
まとめると、Beta 4は4月14日にリリースされるか、あるいは4月24日あたりにリリースされるかどちらかだが、現時点ではどちらとも言いにくい。対するBeta 5はスケジュールに組み込まざるを得ず、その場合は後述のとおり5月下旬にリリースされると思われる。以上が筆者の見解だ。
<追記ここまで>
ここからは筆者の推測だが、本記事執筆時点のデータを基にすると、P1 Blockerが20個で、P2は41個だ。開発責任者らは、P1を処理するのに2週間かかるとみている。とすれば、単純計算でP2は4週間かかることになる。早ければ5月13日にコードフリーズできるはずだが、実際にはもう少し遅れるかもしれない。コードフリーズからリリースまでは1週間〜10日かかるので、Beta 5がユーザーの手元に渡るのは5月下旬だろう。
そこからRC(リリース候補版)を出して、正式版という運びだが、このプロセスが1か月で終わるとは到底思えない。Firefox 3.5のリリースは7月にずれ込むだろう。そして、この遅れがFirefox.nextのリリース時期にも影響することは確実といえよう。
2009年3月のFirefoxシェア
NetApplicationsの月例統計によれば、2009年3月時点におけるFirefoxのマーケットシェアは22.05%。IE8がリリースされたにもかかわらず、前月の21.73%から上昇し、22%台に乗った。
Internet Explorerは、先月の67.51%から66.82%にシェアが低下しており、退潮が止まらない。Firefoxだけでなく、SafariやGoogle Chromeもシェアを伸ばしていることから、モダンブラウザへの乗り換えを止めるに至っていないのがわかる。IE8のアピール戦略は、一般ユーザーに乗り換えを控えさせるだけの力がなかったことになる。あとは、Windows Updateによる配布や、IE8をプレインストールしたPCの販売といったチャンネルを通じてシェアを確保することになるだろう。そうした動きを確認しないと、Firefoxへの影響を見極めることはできない。
バージョン別のシェアでは、Firefox 3は19.66%で先月の19.07%からアップし、Firefox 2は1.99%で先月の2.27%からダウン。Firefox 3がFirefox全体の89%を占めている現状では、Firefoxシェア全体の伸び率(1.5%)がすべてFirefox 3によるものだと仮定しても、Firefox 3の伸び率(3%)には届かない。つまりその差分はバージョンアップによるものと考えられ、Firefox 2以前のユーザーは着実に減っているといえよう。
4月のFirefoxのシェアは、IE8の浸透具合にもよるが、横ばいに近づきながらもわずかに上昇すると予想しておく。Firefox 3.0.8、3.0.9と月をまたいで矢継ぎ早にリリースされることで、注目が集まるからだ。


