読者です 読者をやめる 読者になる 読者になる

Array.joinと+による文字列の速度差

理由がない限り、Array.join("") による文字列連結は使わないほうがいいみたい - latest log
速度差で、+の方が速いという結果を示していますが、これは、おそらく速度を測定する項目が
違うのかなぁと、

id:uupaaがやっている方法だと

  • +で連結
    1. 文字列を連結する

だけど

  • joinで連結
    1. 配列の構築
    2. 配列の連結

と比較している項目が違っている。

正確に"文字列連結"だけの速度を測定するのであれば

console.time('str');
for(var j = 0; j < 1000; j++){
  var str = '';
  for(var i = 0; i < 100; i++){
    str += i;
  }
}
console.timeEnd('str');


var r = [];
for(var i = 0; i < 100; i++){
  r.push(i);
}
console.time('array');
for(var j = 0; j < 1000; j++){
  r.join()
}
console.timeEnd('array');

として配列の構築は外に出してやるべきかと

ちなみに上記の結果だと
join: 87msecに対して+は468msecとやっぱりjoinが速い

もちろん、結局どこかでArray.pushは発生するので、そういうもろもろをかんがみると、+の方がいいのかもしれないんですけどね。