Actionscript 3.0: optimizaciones (II)
Continuación del artículo de optimizaciones en Actionscript 3.0
Sumar / Concatenar cadenas de texto (Strings)
Método: concat()
1 2 3 4 5 6 7 8 9 |
var t:Number = getTimer(); var txt1:String = "Esto es"; var txt2:String = "una prueba de rendimiento"; var txt3:String = "de concatenacion de cadenas" var txt:String; for(var i:uint = 0;i < 1000000; i++){ txt = txt1.concat(" ", txt2, " ",txt3); } trace(getTimer() - t); |
Resultado: 2034 ms
Método: operador +
1 2 3 4 5 6 7 8 9 |
var t:Number = getTimer(); var txt1:String = "Esto es"; var txt2:String = "una prueba de rendimiento"; var txt3:String = "de concatenacion de cadenas" var txt:String; for(var i:uint = 0;i < 1000000; i++){ txt = txt1 + " " + txt2 + " " + txt3; } trace(getTimer() - t); |
Resultado: 894 ms
Conclusión: sumar Strings con + es 2 veces más rápido que utilizar el método concat() de la clase String().
Calcular mínimo / máximo de 2 números
Método: Math.min() / Math.max()
1 2 3 4 5 6 7 8 |
var t:Number = getTimer(); var n1:Number = 234; var n2:Number = 675 var n:Number; for(var i:uint = 0;i < 1000000; i++){ n = Math.min(n1,n2); } trace(getTimer() - t); |
Resultado: 149 ms
Método: condicionales
1 2 3 4 5 6 7 8 |
var t:Number = getTimer(); var n1:Number = 234; var n2:Number = 675 var n:Number; for(var i:uint = 0;i < 1000000; i++){ n = (n1>n2)?n2:n1; } trace(getTimer() - t); |
Resultado: 25 ms
Conclusión: una vez más, hacerlo «a mano» es más rápido.
Multiplicación vs División
Método: división
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var t:Number = getTimer(); for(var i:uint = 0;i < 10000000; i++){ var n:Number = i / 2; } trace(getTimer() - t); <p><strong>Resultado:</strong> 226 ms</p> <br/><br/><br/> <p><strong>Método:</strong> multiplicación</p> <pre class="lang:as decode:true " > var t:Number = getTimer(); for(var i:uint = 0;i < 10000000; i++){ var n:Number = i * .5; } trace(getTimer() - t); |
Resultado: 225 ms
Conclusión: esta era una de las «leyendas urbanas» que siempre habia oido pero nunca habia testeado. Por lo que he estado investigando, hasta alguna versión de FP9, era más rápido multiplicar que dividir un número, pero en las nuevas versiones de Flash Player ya no es así.