我知道做这样的事情
var a = "hello";
a += " world";
它相对非常慢,因为浏览器在O(n)
中做到了这一点。有没有更快的方法可以不用安装新的库就可以做到这一点?
发布于 2012-12-14 08:31:59
这个问题已经回答了,但是当我第一次看到它的时候,我想到了NodeJS Buffer。但它比+慢得多,所以在字符串连接中,很可能没有什么比+更快了。
使用以下代码测试:
function a(){
var s = "hello";
var p = "world";
s = s + p;
return s;
}
function b(){
var s = new Buffer("hello");
var p = new Buffer("world");
s = Buffer.concat([s,p]);
return s;
}
var times = 100000;
var t1 = new Date();
for( var i = 0; i < times; i++){
a();
}
var t2 = new Date();
console.log("Normal took: " + (t2-t1) + " ms.");
for ( var i = 0; i < times; i++){
b();
}
var t3 = new Date();
console.log("Buffer took: " + (t3-t2) + " ms.");
输出:
Normal took: 4 ms.
Buffer took: 458 ms.
发布于 2012-12-13 20:15:17
在JavaScript中,实际上没有任何其他方法可以连接字符串。
从理论上讲,您可以使用.concat()
,但这是,而不仅仅是+
库通常比本机JavaScript慢,特别是在字符串连接或数值操作等基本操作上。
简单地说:+
是最快的。
https://stackoverflow.com/questions/13859543
复制相似问题