AS 3.0/ Dicas

#2 Performance em AS3.0 [Operadores matemáticos]

Continuando a série Performance, mais um tip para você trabalhar bem com AS3.0 independente se seja Flex ou Flash, muitos dos tips vai te ajudar em um dos campos.

Qual o melhor dividir ou multiplicar?

No Flex/Flash é melhor multiplicar do que dividir.

Um caso prático de teste de performance que você pode fazer é o seguinte mostrado no código abaixo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
< ?xml version="1.0" encoding="utf-8"?>
<mx :Application applicationComplete="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	</mx><mx :Script>
		< ![CDATA[
 
		  import flash.utils.getTimer;
 
		  public var time:Number = getTimer();
 
			public function init():void {
				rodarDivisao();
				rodarMultiplicacao();
			}
		  public function rodarDivisao():void {
		    time = getTimer();
		    var i:int;
		   for (;i&lt;10;i++) {
		        var test:int = i/2;
		       }
		      abcDump.text = "teste de divisao" +(getTimer()-time).toString()+ "n" ;
		      trace(getTimer()-time);
		   }
		   public function rodarMultiplicacao():void {
		      time = getTimer();
		      var i:int;
		      for (;i&lt;10; i++) {
		          var teste:Number = i*.5;
		      }
		       abcDump.text = "teste multiplicacao: "+ (getTimer()-time).toString();
		       trace(getTimer()-time);
			}
 
		]]>
	</mx>
 
	<mx :TextArea id="abcDump" width="100" height="100"/>

Ao invés de simplesmente eu pegar um N/2 é mais rápido multiplicar para o Flash Player por 0.5. Claro que tem especificas mudanças que é melhor usar Number para somar ao invés de multiplicar.

Exemplo disso é a seguinte situação

1
2
3
4
5
6
7
8
 
 public function calcular():void {
   var _n:int = 2+2 ;
trace(_n) // mais rápido somar 4
 
   var _n2:int = 2 * 1.5
   trace (_n2) // resultado 3 é mais rápido multiplicar ao invés de somar 2+1;
}

Tem algumas situações que fica meio que confuso, portanto acredito eu que a melhor forma de você fazer esse tipo de teste é usando a classe Timer e ver em qual sentido você ganhou em performance.