読者です 読者をやめる 読者になる 読者になる

Mozilla Flux

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

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のスコアは今回よりも数%程度良くなることだろう。