環境
OS: Ubuntu 13.10
ブラウザ: Chrome バージョン 30.0.1599.114
試験コード
// preparing var a = new Array(10000000); var len = a.length; for (var i = 0 ; i < len; i++) { a[i] = i; } console.time('1'); loop(a); console.timeEnd('1'); console.time('2'); loop2(a); console.timeEnd('2'); console.time('3'); loop3(a); console.timeEnd('3'); console.time('4'); loop4(a); console.timeEnd('4'); function loop(arr){ var len = arr.length; for (var i = 0 ; i < len; i++) { arr[i] = i; } } function loop2(arr){ for (i in arr) { arr[i] = i; } } function loop3(arr){ var len = arr.length; while(len--){ arr[len] = len; } } function loop4(arr){ arr.forEach(function(a, i){ a = i; }); }結果
1: 115.747ms 2: 4611.730ms 3: 104.171ms 4: 566.905ms
(1)ノーマルなfor文と(3)while(len--) が最も速く、(2)for-in文が一番遅いことが判明しました。
このあとFirefoxでも計測してみましたが、順位はほとんど同じ結果となりました。
というわけで、特に理由がなければノーマルなfor文を使うのが良さそうですね。
0 件のコメント:
コメントを投稿