在nodeJS / JavaScript中连接字符串的快速方法

时间:2012-12-13 12:07:35

标签: javascript string node.js concatenation

我理解做类似

的事情
var a = "hello";
a += " world";

它相对非常慢,因为浏览器会在O(n)中执行此操作。没有安装新库,有没有更快的方法?

4 个答案:

答案 0 :(得分:37)

这是在javascript中将字符串连接在一起的最快方法。

有关详细信息,请参阅:

Why is string concatenation faster than array join?

JavaScript: How to join / combine two arrays to concatenate into one array?

答案 1 :(得分:16)

问题已经得到解答,但是当我第一次看到它时,我想到了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.

答案 2 :(得分:8)

JavaScript中没有任何其他方法可以连接字符串 理论上你可以使用.concat(),但 way slower 而不仅仅是+

库通常比本机JavaScript慢,特别是在字符串连接或数值运算等基本操作上。

简单地说:+是最快的。

答案 3 :(得分:1)

你问过性能。请参阅此perf test比较&#39; concat&#39;,&#39; +&#39;和&#39;加入&#39; - 简而言之,+运营商到目前为止胜出。