どっちが良いんだろうか
var containers = container.childNodes; for (var i = 0; i < containers.length; ++i) { if (containers[i].id.match(/gm_minibuffer/i)) { result[containers[i].id] = containers[i]; } }
var containers = container.childNodes; var containers_length = container.childNodes.length; for (var i = 0; i < containers_length; ++i) { if (containers[i].id.match(/gm_minibuffer/i)) { result[containers[i].id] = containers[i]; } }
毎回毎回containers.lengthを参照するのと、containers_lengthを参照するのとでは、どんぐらいパフォーマンスが違うんだろうか。
追記
把握すますた><
[ref. length プロパティのパフォーマンス: Days on the Moon]
[ref. for 文 2.0(笑) - IT戦記]
さらに追記
まぁ、かなり知られてる話ですが JavaScript は .(ドット) の計算がかなり遅い。まぁ、簡単なスクリプトなら問題にならないが。web2.0的には大違いなのであります。ちなみに、.(ドット) の計算に比較演算の 3 倍のコストがかかる(IEはとくに)。
for 文 2.0(笑) - IT戦記
知りませんでした><
早くこいこいまるごとAjax&&サイ本!!
というと・・・
var containers = container.childNodes; for (var i = 0; var length = container.childNodes.length; i < length; ++i) { var container = containers[i].id; if (container.match(/gm_minibuffer/i)) { result[container.id] = container; } }
こうか!
さらにさらに追記
HolyGrailさん、助言ありがとうです!
さらにさらに追記
というか、container.childNodesで既にcontainers取ってるワケですから、container.childNodes.lengthで取る必要性は無いですよね><
ソースからコピペして気づかずにエントリ書いてました・・・