2012-01-20 9 views
1

DOMトラバーサルは高コストなので、可能な限り避けてください。しかし、ほとんどのブラウザでは要素を内部的にidに関連付けるテーブルがある可能性があるため、IDでDOM要素を取得することは非常に低コストでなければならないと思います。 ほとんどの場合、この操作のパフォーマンスコストは無視できます。 これは間違っていますか?DOM要素を高いコストで取得していますか?

ありがとうございました。

+3

テストケースを作成し、[JS Perf](http://jsperf.com/)にアクセスして自分でテストすることをお勧めしますか? –

答えて

2

ChromeとFirefoxでは、IDのマップが作成されているようですが、少なくともie8の場合は、引き続きExplorerにパフォーマンスの問題があるようです。以下のために(ここでは

は結果である:

JavaScript: document.getElementById slow performance?

は引用すると:マイク・ブランドフォードは、少なくともIEが配列マップを使用していないことを意味するので、その性能はsignificantlly苦しんでいることをいくつかのベンチマークを実行しましたその上万個の要素を持つページ):

IE8 getElementByIdを:0.4844 MS IE8番号アレイルックアップ:0.0062ミリ

クロムgetElementByIdを:0.0039メートルs Chrome ID配列検索:0.0006 ms

FFは、クロムとほとんど同じです。確かに、.5msはほとんどのシナリオでほとんど心配することはほとんどありませんが、大きな木や頻繁な呼び出しでは問題になることがあります(IDに基づいた要素のキャッシングシステムをJSで作成することができますいくつかのブラウザでのパフォーマンス)。

関連する問題