JavaScript の for 文のパフォーマンスを改善する

JavaScript の for 文のパフォーマンスを改善する

Posted at September 4,2007 2:28 AM
Tag:[JavaScript, Performance]

すでにご存知の方も多いと思いますが、for 文のパフォーマンス改善テクニックです。

変更前

for (i = 0; i < elements.length; i++) {
       :
}

変更後

for (i = 0, len = elements.length; i < len; i++) {
       :
}

変更前は、ループ処理の i < elements.length つまり length プロパティの参照が毎回行われます。この、いわゆる「ドットつき比較計算」はコストが高い、ということです。

変更後は初期化式で elements.length を保持しているので、ループ回数にかかわらず参照は1回だけになります。

ただし、ネイティブな配列の場合は変更前後でそれほど差はないようで、NodeList オブジェクト(よくみかける document.getElementsByTagName() 等)では、length プロパティの参照回数のインパクトが大きいようです。ブラウザによっても差があるようです。

参考記事:

関連記事
トラックバックURL


コメント

for内でelementsに代入がないなら今や将来の賢いJITコンパイラはきちんと高速化してくれます
逆になるべく普通に書かないときちんと高速化されにくくなります
このようなテクニックは昔流行ったjoinでの文字列連携と同様に基本的に良くないものです

[1] Posted by https://me.yahoo.co.jp/a/2L_TzmQUObwKGiBkZDi.3W77#2eccc logo : September 15, 2012 5:05 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)