Mozilla Foundation, JavaScript EvangelistにしてjQueryの開発者であるJohn Resig氏は12日(米国時間)、 Accuracy of JavaScript Timeにおいて興味深い計測結果を報告している。報告によればJavaScript Webアプリケーションの性能計測をWindows XPやVistaで実行している場合、それはあまり正確な値とはいえないかもしれない。Webデベロッパは報告されている内容を一度検討しておきたい。
John Resig氏は自身が開発しているjQueryの性能を改善するためにベンチマークを実行するわけだが、Dromaeoで結果に0msが含まれていたりSlickSpeedの結果が揺れすぎることに疑問を感じていたという。正確に計測できているならこうした結果にはならず揺れはあるにしても再現性があるはずだし、0msが頻繁に出てくるというのもちょっとおかしい。
ベンチマークでは大体試験の最初と最後の段階で(new Date).getTime()のようにして現在時刻をミリ秒で取得し、その差分で実行時間を計測している。計測結果には正規分布に則った揺れが伴う。この結果を加味してベンチマークでは結果を出力している。ちなみにSunSpiderやDromaeoではより優れた結果を得るためにスチューデントのt分布を使っている(標本が十分でなかったり母分散が未知の場合にはt分布の方が優れた結果を得やすい)。
John Resig氏は揺れが発生したり0msが検出される原因を明らかにする目的で、空ループを1万回繰り返したり数千のdivを経由してループやクエリ、編集を実施するベンチマークを作成しヒストグラムにまとめた。Mac OS Xで計測したところ0msの近辺に結果が集まるという結果が得られるものの、それ以外はOpera、Safari、WebKit Nightly、Firefoxで期待通りの正規分布が観測されている。
これをWindows XPで実行するとFirefoxとChromeが辛うじて正規分布のような結果を示すものの曖昧な形になり、それ以外のブラウザは正規分布っぽさすらなく定期的に値が現れている。ネイティブに実行してもVMware Fusionで実行しても結果は同じだとされている。Vistaでもたいした違いはないようだ。getTime()の返す値の粒度が15msであるため、その値まで精度が下がるのが原因だ。結果的に実行時間が15ms以下の場合は0msとして現れることになる。この15ms制限をクリアするには少なくとも試験が750ms以上かかるようにして全体の1%未満にまでしないと効果的な結果が得られない。
John Resig氏の指摘によれば、こうした問題を加味してベンチマークが実施されているのはGoogleが公開しているV8 Benchmark Suiteになるようだ。もしこれまで自身で1秒に満たないベンチマーク試験を作成してJavaScriptのコードやJavaScriptフレームワークの評価をWindows XPやVistaで実施していたのであれば、それぞれのベンチマークが1秒はかかるようにして再度チェックした方がいいかもしれない。
| JavaScriptベンチマーク結果発表、OperaとSafari3が高速 [2007/12/21] |
| 新しいJavaScriptベンチ「SunSpider」が登場 [2007/12/20] |
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
[小栗旬]映画監督役「なんか不思議」 映画「キツツキと雨」初日舞台あいさつ [15:35 2/11] エンタメ |
|
ラズウェル細木サイン入り、土用丑の日カレンダーが抽選で [15:20 2/11] ホビー |
|
【女性編】バレンタインチョコをあげたい芸能人ランキング [15:00 2/11] ライフ |
|
【男性編】バレンタインチョコをもらいたい芸能人ランキング [15:00 2/11] ライフ |
|
[戸田菜穂]第1子女児を出産 「感動でいっぱい」春にも仕事復帰 [14:51 2/11] エンタメ |