数组连接vsstringConcat

哪种方法更快?

arraysjoin:

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(""); 

stringConcat:

 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]; } 

string连接在ECMAScript中更快。 这是我创build的一个基准,向您展示:

http://jsben.ch/#/OJ3vo

我可以肯定的说,使用Array.join()更快,我已经研究了几个JavaScript代码,并通过删除string操作来提高性能,从而有利于数组。

从2011年到现代…

使用string连接看下面的join重写,比标准实现慢多less。

 // 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; } 

道德是 – 不手动连接string,总是使用标准的join

根据这个名为“优化JavaScript代码”的 Google文档,stringconcat比数组join要慢,但是对于现代JavaScript引擎来说显然不是这样。

我为他们在文档中使用的Fibonaccitesting示例做了一个基准testing ,它显示了连接(粘贴)string几乎是使用Array join 4倍。