うめすこんぶ

日々のプログラミングで残しておきたいメモ.何かの役に立てれば幸いです.

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)がもっとも速い)