lifebench 'Conway@Arecibo'

ライフゲームでブラウザの JavaScript と DOM 操作の実行速度を測ります。

アレシボメッセージのパターンを初期配置に、コンウェイのライフゲームをトーラス面で実行すると、約 300 世代で振動パターンに収束するので、そこまでの計算と表示に掛かる時間を測ります。

世代 0/300, 時間

手元の環境で計測した結果は以下の通りです。
絶対的な指標ではなく、ある同一環境に於けるブラウザ毎の相対評価と考えてください。

Pentium4 3.2GHz, Windows Vista Ultimate
Opera 9.60 14 秒
IE8β 8.0.6001.18241(IE7 互換モード) 37 秒
Firefox 3.0.1 19 秒
Safari 3.1.2 23 秒
Google Chrome 0.2.149.27 11 秒

IE は、何度も繰り返し計測をするとクラッシュする事がある様です。


個人的興味から、面白そうだから測ってみただけ。
一応、Opera 6.x の頃にトランスウエアからライセンスコードを買って以来の Opera ユーザなんで、「あー Opera って速いなー」というのを再確認した感じ。

ブラウザ毎の差異は、それなりにあるみたい。
最初は各セルに ID を振って getElementById() で操作していたんだけど、この方法だと IE7 は 700 秒も掛かっていた。 他のブラウザではここまで速度低下しなかったから、他のブラウザは ID をキャッシュしているのか、元々 IE は DOM 操作が苦手なのか。 その後、事前に ID を得ておく方式にしたり、今<table> の配列を直に操作しているんだけど、それでも IE は少々いから、両方か。
でも、高速に間違えるプログラムに意味はないんで、動作が確実なら多少は遅くてもイイかな、という気はする。

くなったという触れ込みの IE8β が出たんで、IE7 互換モードで測ってみたけど、IE7 と殆ど変わらなかった。 もしかして、互換モードじゃ威力を発揮出来ない?

Safari は、言われている程には速くないけど、Mac と Windows では事情が違う?
‥‥と思っている所に、Google Chrome 登場。 Safari と同じエンジンらしいけど、Chrome の方が断然い。
ただ、このサイズ(23×73)の盤面だと最速だけど、中サイズ(100×100)だと Opera の方が速くなる。 JavaScript コアは速いけど、DOM 操作はそれ程でもないのか。 こういうテストでも、Chrome より Opera の方が速い。

盤面の描画<table> ではなく <canvas> でしてみた。
Chrome 速っ!  盤面が広くなればなる程、Opera もそれなりに(<table>からの相対評価で)くなるけど、それ以上に Chrome は高速に動いてくれる。
となると <canvas>で各ブラウザを比較してみたいけど、IE は対応してない。