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