web-dev-qa-db-fra.com

Un moyen rapide de concaténer des chaînes dans nodeJS / JavaScript

Je comprends que faire quelque chose comme

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

C'est relativement très lent, comme le navigateur le fait dans O(n). Existe-t-il un moyen plus rapide de procéder sans installer de nouvelles bibliothèques?

50
Yotam
37
Azodious

La question a déjà reçu une réponse, mais lorsque je l’ai vue pour la première fois, j’ai pensé à NodeJS Buffer. Mais comme il est beaucoup plus lent que le +, il est donc probable que rien ne peut être plus rapide que le + dans la concétanation de chaînes.

Testé avec le code suivant:

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

Sortie:

Normal took: 4 ms.
Buffer took: 458 ms.
16
Mustafa

Il n'y a pas vraiment d'autre moyen en JavaScript de concaténer des chaînes.
Vous pouvez théoriquement utiliser .concat(), mais c'est beaucoup plus lent que juste +

Les bibliothèques sont le plus souvent plus lentes que le JavaScript natif, en particulier pour les opérations de base telles que la concaténation de chaînes ou les opérations numériques.

Tout simplement: + est le plus rapide.

8
Cerbrus

Vous avez demandé à propos de la performance. Regardez ceci test de performance en comparant 'concat', '+' et 'join' - bref l'opérateur + gagne de loin.

1
Stuart Hallows