Quelle méthode est plus rapide?
Array Join:
var str_to_split = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
var myarray = str_to_split.split(",");
var output=myarray.join("");
String Concat:
var str_to_split = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
var myarray = str_to_split.split(",");
var output = "";
for (var i = 0, len = myarray.length; i<len; i++){
output += myarray[i];
}
La concaténation de chaînes est plus rapide dans ECMAScript. Voici un repère que j'ai créé pour vous montrer:
Je peux certainement dire que l'utilisation de Array.join () est plus rapide. J'ai travaillé sur quelques éléments de code JavaScript et accéléré considérablement les performances en supprimant la manipulation des chaînes au profit des tableaux.
À partir de 2011 et dans les temps modernes ...
Voir le join
rewrite suivant à l'aide de la concaténation de chaînes et combien il est plus lent que l'implémentation standard.
// Number of times the standard `join` is faster, by Node.js versions:
// 0.10.44: ~2.0
// 0.11.16: ~4.6
// 0.12.13: ~4.7
// 4.4.4: ~4.66
// 5.11.0: ~4.75
// 6.1.0: Negative ~1.2 (something is wrong with 6.x at the moment)
function join(sep) {
var res = '';
if (this.length) {
res += this[0];
for (var i = 1; i < this.length; i++) {
res += sep + this[i];
}
}
return res;
}
La morale est - ne pas concaténer les chaînes manuellement, utilisez toujours le standard join
.
Selon ce document Google intitulé "Optimisation du code JavaScript" , l'enchaînement des chaînes est plus lent que la jonction d'un tableau, mais apparemment, ce n'est pas vrai pour moteurs Javascript modernes.
J'ai fait ne référence pour l'exemple de test de Fibonacci qu'ils ont utilisé dans le document et cela montre que la concaténation (collage) de la chaîne est presque 4x aussi rapide que d'utiliser Array
join
.
La concaténation manuelle est plus rapide, pour un tableau numérique de longueur fixe.
Voici un test JSPerf qui teste ces deux opérations :
zxy.join('/')
// versus
zxy[0] + '/' + zxy[1] + '/' + zxy[2]
// given the array
zxy = [1, 2, 3]
// resulting in the string '0/1/2'
Résultats: Utilisation de Chrome 64.0.3282.186, Array.join
était 46% plus lent.