マンデルブロ集合を描く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系には不利なベンチマークになりますが、Sunspider、V8 Benchmark Suite、Dromaeoとはまたちょっと違った傾向を示しています。それでも、Chromeは速いほうですね。
このベンチマークを作成及び測定を行ってようやくわかったことがあります。それは、Javascriptベンチマークで華やかなものが存在しないのは、IE系がCanvasをサポートしないため、作っても表示しづらいところです。
今回作成したスクリプトは、単位時間内の処理数を競うのではなく、ある一定の量を完走するまでの時間測定にしています。このため、測定時間の90%近くがIE系の測定にかかっています(IE系が遅すぎて条件を重くすることもできなかった)。IEを基準にすると、ベンチマークが取りづらいものになります。
この様な理由により、JavascriptベンチマークスクリプトでCanvasを使った華やかものが存在しないのですね。だから、V8 Benchmark Suiteにレイトレの項目があるのに表示をしないのだとようやく理解できました。
作っておきながら、あまり意味がないことにようやく気づいた次第です。