Méthode rapide pour concaténer les chaînes en nodeJS / JavaScript [dupliquer]

cette question a déjà une réponse ici:

je comprends que faire quelque chose comme

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

il est relativement très lent, comme le fait le navigateur dans O(n) . Est-il un moyen plus rapide de le faire sans installer de nouvelles bibliothèques?

49
demandé sur Prince John Wesley 2012-12-13 16:07:34

4 réponses

35
répondu Azodious 2017-05-23 12:10:33

la question est déjà répondue, cependant quand je l'ai vu pour la première fois j'ai pensé à NodeJS Buffer. Mais il est beaucoup plus lent que le +, de sorte qu'il est probable que rien ne peut être plus rapide que le + dans la concétanation de chaîne.

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.
15
répondu Mustafa 2014-07-08 12:37:09

il n'y a pas vraiment d'autre moyen dans JavaScript de concaténer les chaînes.

Vous pourriez théoriquement utiliser .concat() , mais c'est beaucoup plus lent que juste +

Les bibliothèques

sont le plus souvent plus lentes qu'un JavaScript natif, en particulier sur les opérations de base comme la concaténation de chaîne, ou les opérations numériques.

simplement dit: + est le plus rapide.

8
répondu Cerbrus 2012-12-13 12:27:45

vous avez demandé à propos de la performance. Voir ce perf test comparer ' concat', ' + ' et 'join' - en bref l'opérateur + gagne de loin.

1
répondu Stuart Hallows 2014-11-12 23:58:22