2010-09-23 13 views

Respuesta

5

La forma 'mejor' sería:

var nameparts= ['Bob']; 
nameparts.push(' is a good name'); 
... 
nameparts.join(''); 

Sin embargo, la mayoría de las implementaciones de JavaScript modernas a hacer ahora detectar la concatenación ingenuo y en muchos casos puede optimizar a la basura, porque muchas personas tienen (por desgracia) por escrito codificar de esta manera Entonces, en la práctica, el 'buen' método no será hoy mucho más rápido que antes.

+0

derecha - creo que es una lástima echar a perder código preciosa, con técnicas de optimización de enfoque estrecho. Ahora, dicho eso, IE6 fue realmente tan terriblemente lento en algunas situaciones que este truco particular es uno que es realmente bueno saber. Para dos o tres concatenaciones es una tontería, pero para números tan bajos como los cientos bajos puede hacer una diferencia sorprendente. – Pointy

+0

¿Tiene una lista de las implementaciones que optimizan esta distancia? – bobber205

+0

Estoy modificando algunos algunos código antiguo JS y la función que tuvo el 40% del tiempo de ejecución de acuerdo con Firebug es en su mayoría sólo concatenaciones de cadenas. – bobber205

1

¡Se puede obtener un gran aumento del rendimiento simplemente utilizando cuerdas intermedias! Es posible crear una clase similar a StringBuffer en JavaScript para obtener aún más potencia de rendimiento.

Vea el artículo completo y los gráficos here.

0

una vez que leí un artículo sobre este tema que oferente algo de código para construir cadenas tamponadas con matrices:

http://www.softwaresecretweapons.com/jspwiki/javascriptstringconcatenation

he comprobado yo mismo y que era mucho más rápido en IE ... y una manera más lenta en Firefox!

En resumen: hay muchos motores de JavaScript por ahí y realmente no podemos confiar en este tipo de detalles de implementación. Si alguna vez es un problema, lo notará. Antes de eso, no te preocupes demasiado.

1

Eficiencia de la concatenación de cadenas dependerá de un navegador que esté utilizando. Puedes buscar estadísticas en google, también hay un googleTalk disponible en youtube. Por lo que puedo recordar, la mayoría de los navegadores manejan las concatenaciones de cadenas de manera eficiente cuando la cantidad de elementos está por debajo de unos miles. Después, IE se ralentiza a un ritmo exponencial, cuando a Firefox, Chrome y Safari les va mucho mejor. Esto puede cambiar ya que IE9 no está tan lejos ahora.

Cuestiones relacionadas