環境
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 件のコメント:
コメントを投稿