Подтвердить что ты не робот

Быстрый способ конкатенации строк в nodeJS/JavaScript

Я понимаю, что что-то вроде

var a = "hello";
a += " world";

Это относительно медленно, поскольку браузер делает это в O(n). Есть ли более быстрый способ сделать это без установки новых библиотек?

4b9b3361

Ответ 2

Вопрос уже ответил, однако, когда я впервые увидел его, я подумал о 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.

Ответ 3

В JavaScript нет никакого другого способа конкатенации строк.
Теоретически вы можете использовать .concat(), но путь медленнее, чем просто +

Библиотеки чаще, чем не более медленные, чем родной JavaScript, особенно для основных операций, таких как конкатенация строк или числовые операции.

Проще говоря: + является самым быстрым.

Ответ 4

Ты спросил о производительности. Смотрите perf test, сравнивая "concat", "+" и "join" - короче + оператор выигрывает далеко.