javascriptで配列宣言は`new Array`がいいのか,`[ ]`が速いのか確かめた
スポンサーリンク
javascriptで空の配列を宣言する場合,次の3通りがあります.いったいどれが一番速いか,という問題.
var a = new Array(); var b = new Array(n); var c = [];
おそらくbは,nの大きさによって変わるでしょう.
確かめた
関数fをn回実行した時の合計時間の平均を求める関数です↓.
function benchmarkNAvg(name, n, f) { console.log(name + ':'); var args = Array.prototype.slice.call(arguments).slice(3); var sum = 0; var times = 10; for(var i = 0; i < times; i++){ // times回の平均 var s = Date.now(); for(var j = 0; j < n; j++){ // n回の合計時間を測る f.apply(null, args); } sum += Date.now() - s; } var t = sum / times; console.log('time = ' + t + 'msec'); return t; }
測ってみます.
var times = 1000000; benchmarkNAvg('new Array()', times, function() { var a = new Array(); }); benchmarkNAvg('new Array(10)', times, function() { var a = new Array(10); }); benchmarkNAvg('new Array(100000)', times, function() { var a = new Array(100000); }); benchmarkNAvg('[]', times, function() { var a = []; });
結果
ブラウザ:
※数値はミリセカンド
method | chrome | firefox | IE |
---|---|---|---|
new Array() | 51 | 31.5 | 112.5 |
new Array(10) | 69.3 | 31.3 | 111 |
new Array(100000) | 2017.3 | 31.2 | 75.4 |
[] | 45.5 | 31 | 93.4 |
結論
配列の宣言は,[]
を使いましょう!文字数も少なくてグッドですね.
(ただ,IEはなぜかnew Array(100000)
がもっとも速い)