Actionscript 3.0: optimizaciones (II)

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. var t:Number = getTimer();
  3. var txt1:String = "Esto es";
  4. var txt2:String = "una prueba de rendimiento";
  5. var txt3:String = "de concatenacion de cadenas"
  6. var txt:String;
  7. for(var i:uint = 0;i < 1000000; i++){
  8. 	txt = txt1.concat(" ", txt2, " ",txt3);
  9. }
  10. trace(getTimer() - t); 
  11.  

Resultado: 2034 ms




Método: operador +

  1.  
  2. var t:Number = getTimer();
  3. var txt1:String = "Esto es";
  4. var txt2:String = "una prueba de rendimiento";
  5. var txt3:String = "de concatenacion de cadenas"
  6. var txt:String;
  7. for(var i:uint = 0;i < 1000000; i++){
  8. 	txt = txt1 + " " + txt2 + " " + txt3;
  9. }
  10. trace(getTimer() - t); 
  11.  

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. var t:Number = getTimer();
  3. var n1:Number = 234;
  4. var n2:Number = 675
  5. var n:Number;
  6. for(var i:uint = 0;i < 1000000; i++){
  7. 	n = Math.min(n1,n2);
  8. }
  9. trace(getTimer() - t); 
  10.  

Resultado: 149 ms




Método: condicionales

  1.  
  2. var t:Number = getTimer();
  3. var n1:Number = 234;
  4. var n2:Number = 675
  5. var n:Number;
  6. for(var i:uint = 0;i < 1000000; i++){
  7. 	n = (n1>n2)?n2:n1;
  8. }
  9. trace(getTimer() - t); 
  10.  

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. var t:Number = getTimer();
  3. for(var i:uint = 0;i < 10000000; i++){
  4. 	var n:Number = i / 2;
  5. }
  6. trace(getTimer() - t); 
  7.  

Resultado: 226 ms




Método: multiplicación

  1.  
  2. var t:Number = getTimer();
  3. for(var i:uint = 0;i < 10000000; i++){
  4. 	var n:Number = i * .5;
  5. }
  6. trace(getTimer() - t); 
  7.  

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
    • Autor
    • Iván
    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 ;)
    • Autor
    • esedeerre

    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.

    • Autor
    • luis
    por fvor ps qiero me ayuden ps pueden aguuuuuuuu
Dejar un comentario
Tu nombre (obligatorio):

E-mail (obligatorio, no se mostrará):

Web:

Comentario: