JuanCri.com

miércoles 21 de marzo, 2007 a las 19:13
Después de difamar a mi querido string y criticar la lentitud en sus concatenaciones, me tengo que retractar. Aquí van las pruebas con un loop de 100.000 iteraciones:

Concatenar 0.0353810
Formatear 0.2165670
Construir 0.0928610


En esta prueba, concatenar es 6 veces más rápido que formatear, y dos veces más rápido que StringBuilder.

Hay dos explicaciones para eso:

1.- Explicación: por qué mi test anterior era tan impreciso
El hacer un sólo loop y el utilizar JIT hacía que el tiempo de comilación del método invocado fuera relevante en el resultado. Ahora, con 100.000 iteraciones, el factor primordial es el verdadero rendimiento del método en ejecución.

2.- Explicación: por qué concatenar es rápido
A pesar de mis presunciones, gmcs sí es capaz de optimizar el concatenado de tres strings. No he visto el código en IL todavía (pronto). Pero al parecer llama a String.Concat (string, string, string). Algo que Ariel me había sugerido como optimización y que, hasta un momento atrás, pensé que no era posible a ese nivel...

¿Qué esperaban?, eran las 3AM :)

Creative Commons License
Blog JuanCri.com por Juan Cristóbal Olivares licenciado bajo la Creative Commons Attribution 2.0 Chile License.
Mono PostgreSQL Firefox Gratis

© JuanCri.com