7/23/2009

Javascript の処理スピード

getElementById で値とかを代入していくのと、getElementsByTagName で全部格納しておいて代入するのと、どちらが早いのか実験してみた。
getElementById だとその都度 document 内を徘徊するらしいので、後者の方が速いんやろなと思っていたけど、結果はあまり差はなかった。

まず、<input type="text"> をたくさん作っておく。今回は最大 2000 個まで生成するようにした。
そのときに、input の id に連番を振っていく。
ここからがテスト対象。
3 で割り切れる id の value に「アホ」と代入していくようにする。
2000 個の input の場合は、都合 660 回以上「アホ」を代入するという、外から見たらお前がアホなのではと疑われるような処理を走らせる。
処理の最初と最後に getTime(); の数値を取り、その差分で計測する。
結果、method での差はあまりなかったが、ブラウザでかなりの差があった。
以下は 2000 個での結果。
◆Safari 4.0.2
 約 340 ミリ秒付近
◆Firefox 3.5.1
 約 3300 ミリ秒以上
◆Opera 10.00 beta 2
 約 30 ミリ秒未満

※環境は Mac OS 10.5.7、G4 1.42GHz、1GB メモリ

Firefox が何故遅いのか、Opera が何故異常に速いのか。
また別のアホな実験処理をやってみたいと思う。

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.