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 10 11 |
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 10 11 |
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 9 10 |
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 9 10 |
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 16 17 |
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í.
COMENTARIOS
Tio, me estás tirando todas mis creencias a la basura. Lo de multiplicar mejor que dividir lo habría jurado sobre la Biblia de Flash ;)
Bueno, en realidad no es del todo mentira. Multiplicar era mejor que dividir hasta alguna versión de Flash Player 9. Desde entonces el rendimiento es el mismo, pero toda la gente que tenga players anteriores seguirá «notando» la diferencia.
por fvor ps
qiero me ayuden
ps pueden
aguuuuuuuu
DEJA TU COMENTARIO