7
votes

Est-ce que [x, y, z] .join ('') vraiment plus vite que x + y + z pour les cordes?

est [x, y, z] .join ('') code> vraiment plus vite que x + y + z code> pour les chaînes?

Sous l'impression qui rejoint () Est plus rapide, j'ai commencé par mon code pour l'utiliser plutôt que +, puis j'ai couru dans la ligne suivante dans le code Google Analytics: P>

    ga.src = ('https:' === document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';


3 commentaires

La vitesse d'une fonction est déterminée par la mise en œuvre JavaScript, qui varie entre les navigateurs. Pour tester - JSPERF.COM


Ceci est également [x, y] .join ('') . Je crois que les économies sont avec un plus grand nombre d'arguments (car vous faites un appel par annexe avec + et que vous joinez est juste un appel de fonction.)


+ Bakudan, a trouvé un test qui devrait renvoyer une lumière: JSperf.com/concat-vs-join2/ 4


3 Réponses :


6
votes

Le tableau .join () Méthode (-Trick) pour les chaînes de concaténage a ensuite ses racines à l'époque lorsque des sites Web ont couru sur Internet Explorateurs comme beaucoup. Pour IE6 + 7, c'est très vrai que .join () est beaucoup plus rapide que l'utilisation de l'opérateur + en raison d'un comportement vraiment mauvais avec les opérations de chaîne dans IE.

Pour les autres navigateurs, la différence de performance n'était pas si grande, donc c'était un bon conseil d'utiliser .join () (à nouveau, à l'époque). De nos jours, la plupart des moteurs optimisent les opérations de chaîne Big Time et à moins que vous ne penses que l'un de votre code circule dans IE6 + 7, vous devez simplement utiliser + . .


0 commentaires

2
votes

Utilisation de Firebug Console dans Firefox 6.0.2 Utilisation du code suivant:

b = new Date().getTime(); for (var i = 0; i < 10000; i++) {a = ["sfhfdshdshsdh","sfhsfdhsfhdsfh","shsfdsdgsdgsgsdfgdfsgsfdghsdfhsdh"].join();} c = new Date().getTime(); d = c - b;


0 commentaires

1
votes

Voici un exemple que j'ai couru sur Google Chrome.

Essayez d'autres broswers ....

en chrome pour moi + était toujours plus rapide ...

http://jsperf.com/join

http://jsperf.com/join-6


0 commentaires