concatenate concatenar javascript performance join

concatenar - Concatenación de cadenas de Javascript más rápido que este ejemplo?



string concatenation (7)

Tengo que concatenar un montón de cadenas en Javascript y estoy buscando la forma más rápida de hacerlo. Supongamos que el Javascript tiene que crear un gran "archivo" XML que, naturalmente, consiste en muchas cadenas pequeñas. Así que se me ocurrió:

var sbuffer = []; for (var idx=0; idx<10000; idx=idx+1) { sbuffer.push(‘<xmltag>Data comes here... bla... </xmltag>’); } // Now we "send" it to the browser... alert(sbuffer.join(”));

No preste atención al bucle o al otro código "sofisticado" que crea el ejemplo.

Mi pregunta es: para un número desconocido de cadenas, ¿tienes un algoritmo / método / idea más rápido para concatenar muchas cadenas pequeñas a una enorme?


¡Cuidado con el mal recolector de basura de IE! ¿Qué supone hacer con su matriz después de usar? ¿Probablemente obtendrá GC?

Puede obtener ejecución al concatenar con combinaciones, y luego perder en post-GC. Por otro lado, si deja una matriz en el alcance todo el tiempo, y NO la vuelve a utilizar, esa puede ser una buena solución.

Personalmente, me gustaría la solución más simple: solo usar el operador + =.


Cambiar la línea:

sbuffer.push(''Data comes here... bla... '');

a

sbuffer[sbuffer.length] = ''Data comes here... bla... '';

le dará un 5-50% de ganancia de velocidad (dependiendo del navegador, en IE - la ganancia será más alta)

Saludos.


Creo que estás bastante cerca del óptimo. YMMV, se gana o se pierde una gran cantidad de velocidad dentro del motor de JavaScript del proceso de host (por ejemplo, el navegador).


Creo que presionar las cuerdas en una matriz y unirlas a la matriz es la técnica más rápida para la concatenación de cadenas en JavaScript. Hay alguna evidencia de apoyo en esta discusión sobre W3C DOM vs. innerHTML . Tenga en cuenta la diferencia entre los resultados innerHTML 1 e innerHTML 2.


Hasta donde yo sé, su algoritmo es bueno y se lo conoce como una solución de rendimiento para el problema de concatenación de cadenas.