どちらの方法が速いですか?
配列結合:
var str_to_split = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
var myarray = str_to_split.split(",");
var output=myarray.join("");
文字列連結:
var str_to_split = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
var myarray = str_to_split.split(",");
var output = "";
for (var i = 0, len = myarray.length; i<len; i++){
output += myarray[i];
}
文字列の連結はECMAScriptで高速です。以下に、私が作成したベンチマークを示します。
私は間違いなくArray.join()を使用する方が速いと言うことができます。 JavaScriptコードのいくつかの部分に取り組み、配列を優先して文字列操作を削除することでパフォーマンスを大幅に向上させました。
2011年から現代へ...
文字列連結を使用した次のjoin
書き換えと、標準の実装よりも遅いことを参照してください。
// Number of times the standard `join` is faster, by Node.js versions:
// 0.10.44: ~2.0
// 0.11.16: ~4.6
// 0.12.13: ~4.7
// 4.4.4: ~4.66
// 5.11.0: ~4.75
// 6.1.0: Negative ~1.2 (something is wrong with 6.x at the moment)
function join(sep) {
var res = '';
if (this.length) {
res += this[0];
for (var i = 1; i < this.length; i++) {
res += sep + this[i];
}
}
return res;
}
教訓は-文字列を手動で連結せず、常に標準のjoin
を使用することです。
このGoogleドキュメントは 'JavaScriptコードの最適化' string concatは配列結合よりも遅いが、明らかにこれは当てはまらない最新のJavascriptエンジン。
フィボナッチテスト例のベンチマーク を作成しました。これは、文字列の連結(接着)がArray
join
を使用した場合とほぼ4倍速いことを示しています。
固定長の数値配列の場合、手動連結は高速です。
zxy.join('/')
// versus
zxy[0] + '/' + zxy[1] + '/' + zxy[2]
// given the array
zxy = [1, 2, 3]
// resulting in the string '0/1/2'
結果:Chrome 64.0.3282.186、Array.join
は46%遅くなりました。