オルタナティブ・ブログ > 少しでもパラノイアになってみる >

知的好奇心を満たすために、いろいろなことにチャレンジする

マンデルブロ集合を描くJavascriptベンチマークスクリプトを作成してみた

»

Googleが、Native Clientを発表しましたが、その中でJavascriptとNative Clientでマンデルブロ集合を描く比較(JavascriptとNative Client)を行っているソースが公開されています。

私は、常々Javascriptのベンチマークで華やかなものがないと思い、このマンデルブロ集合を描くスクリプトをJavascriptベンチマークスクリプトぽく修正してみました。

動くページは、マンデルブロ集合Javascriptページにあります。また、フラクタルとしてコッホ曲線を描くものも作成してみました。コッホ曲線を描くスクリプトは、「再帰プログラムによるフラクタル図形の描画」を参考にさせていただきました。

ソースはソース置き場のmandel_tiled.zipにあります。IE系で動かすには、同じディレクトリにexcanvas-compressed.jsが必要です。

この二つのJavascriptベンチマークスクリプトを各ブラウザ(IE 7/8,Firefox 3.0/3.1b2/3.2a1,Opera 9.6/10.0a,Chrome 0.4/0.5,Safari 3.2,Webkit)で測定してみました。値はmsで処理完了時間を示し、小さいほうが速いことを示します。また測定したPCは、CPU:Phenom X4 9950BE(2.6GHz)、OS:Vista 64bitです。

ブラウザ Modelbrot
Canvas size=100
(ms)
Koch Curve
Steps=6
(ms)
Firefox 3.1 beta 2 174 117
Chrome 0.5.155.0(6705) 188 68
Chrome 0.4.154.33 197 71
Firefox 3.2 alpha 1 pre 207 123
Opera 9.62 448 98
Opera 10.0 alpha 463 58
WebKit r39088 473 79
Firefox 3.0.4 556 149
Safari 3.2.1 760 107
IE 8 beta 2 10,676 3,037
IE 7 12,183 5,337

マンデルブロ集合が速い順に並べました。描画にCanvasを使っているため、IE系には不利なベンチマークになりますが、SunspiderV8 Benchmark SuiteDromaeoとはまたちょっと違った傾向を示しています。それでも、Chromeは速いほうですね。

このベンチマークを作成及び測定を行ってようやくわかったことがあります。それは、Javascriptベンチマークで華やかなものが存在しないのは、IE系がCanvasをサポートしないため、作っても表示しづらいところです。

今回作成したスクリプトは、単位時間内の処理数を競うのではなく、ある一定の量を完走するまでの時間測定にしています。このため、測定時間の90%近くがIE系の測定にかかっています(IE系が遅すぎて条件を重くすることもできなかった)。IEを基準にすると、ベンチマークが取りづらいものになります。

この様な理由により、JavascriptベンチマークスクリプトでCanvasを使った華やかものが存在しないのですね。だから、V8 Benchmark Suiteにレイトレの項目があるのに表示をしないのだとようやく理解できました。

作っておきながら、あまり意味がないことにようやく気づいた次第です。

Comment(0)