Luigi, me muestra hoy un artículo muy interesante sobre optimización de Javascript. En él encontramos un ejemplo de como mejorar nuestras iteraciones en nuestro código. Simplemente debemos pensar en decrementar la variable que estamos iterando. He montado un pequeño ejemplo para testear 50.000, 500.000 y 5.000.000 de iteraciones simples. Los resultados hablan por si solos:
[increment]50.000 iteraciones: 11ms. (50000) [decrement]50.000 iteraciones: 2ms. (50000) [increment]500.000 iteraciones: 115ms. (500000) [decrement]500.000 iteraciones: 19ms. (500000) [increment]5.000.000 iteraciones: 1188ms. (5000000) [decrement]5.000.000 iteraciones: 181ms. (5000000)
Funciones
El código del ejemplo es muy sencillo y como se puede ver, únicamente se encarga de incrementar la variable y, en ambas.
var fors = { increment: function(iterations){ var y = 0; for (var i=0;i<iterations;i++){ y++; } return y; }, decrement:function (iterations){ var y = 0; for (var i=iterations;i>0;i--){ y++; } return y; } }
Como podemos ver, un pequeño cambio puede significar reducir entre un 200 y un 600% el tiempo de procesamiento de nuestros scripts. ¿Alguna optimización más?
Explicación
El motivo de esta diferencia de tiempo, es debido a que increment()
debe realizar una revisión del valor de iterations
por cada pasada por el bucle. De esta forma, se realiza un acceso a memoria para solicitar el valor de la variable, algo que no pasa en decrement()
que al comparala con 0, nos ahorramos dicha consulta.
18 comentarios, 2 referencias
+
#