数组连接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的一个基准,向您展示:
我可以肯定的说,使用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倍。