Actionscript 2.0, Flash

enero 2009

Actionscript 3.0: optimizaciones (I)

Este artículo recoge algunos test de rendimiento para diversas operaciones en Actionscript 3.0. Este es un tema que me interesa bastante, asi que espero hacer mas test e ir ampliando información en el futuro.

Los test se han realizado en un Core2 6420 2,13Ghz, con 3GB de RAM y Windows Vista Home Premium de 32 bits. La versión de Flash Player es la 10,0,2,54.

 

Recorrer elementos de un Array (de 1 millón de elementos)

Resultado: 130 ms

 

Si sustituimos el tipo de i de Number a uint:

Resultado: 95 ms

 

Si almacenamos matriz.length en una variable:

Resultado: 23 ms

 

En definitiva, solo con poner uint (entero positivo) como tipo de i, y con almacenar la longitud de la matriz en una variable, hacemos que el bucle se ejecute 5,6 veces más rápido.

 

Redondear números (Math.floor)

Resultado: 163 ms

 

Resultado: 29 ms

 

Resultado: 18 ms

 

Este test me ha sorprendido mucho. Convertir el número a int(entero), es 9 veces más rápido que utilizar Math.floor(). Teniendo en cuenta que el resultado es el mismo, y que encima int tiene menos letras que Math.floor, no veo motivos para no desterrar a Math.floor().

 

Obtener el valor absoluto de un número (Math.abs)

Resultado: 145 ms

Resultado: 26 ms

Es decir, obtener el valor absoluto "a mano", 5,5 veces más rápido que utilizar Math.abs()