
Ofta vid stora projekt vill man kunna se hur prestandan ligger till. Möjlighet att kunna se exempelvis hur länge det tar att köra en funktion, klass och så vidare.
gSkinner har skapat ett verktyg i AS3 för att kunna ta reda på sådan data.
Vad du får av Performace Test är all data du behöver veta av funktioner och klasser. Du får resultatet i tid, dvs. som talar om hur lång tid det tar att slutföra en specifik funktion. Där i påverkar variablar och sättet att skriva AS3 på, prestandan på ditt projekt.
Till exempel, man kan skriva en enkel if-sats på 3 olika sätt:
- Traditionel if-sats
if( 2 == 3){
trace("2 är lika med 3");
}else{
trace("2 är inte lika med 3");
};
- Vanlig switch-sats
switch(2==3){
case true:
trace("2 är lika med 3");
break;
case false:
trace("2 är inte lika med 3");
break;
};
- En genväg
2 == 3 ? trace("2 är lika med 3") : trace("2 är inte lika med 3");
Det är då 3 sätt att köra en if-else-statement (om-eller). Det snabbaste sättet här är Switch-satsen.
Resultatet blev:
- Switch-sats på 40 anrop gav totalt 5 ms och 1 anrop genomsnitt 0.13 ms per anrop
- Genväg på 40 anrop gav totalt 6 ms och 1 anrop genomsnitt 0.15 ms per anrop
- Traditionel if-sats på 40 anrop gav totalt 7 ms och genomsnitt 0.18 ms per anrop
Det betyder att när funktioner kallades 40 gånger så tog det totalt 5 ms (Switch-sats) att genomföra. Att anropa denna funktion en gång blev genomsnitt 0.13 ms, vilket är 0.05 ms snabbare än den traditionella if-satsen. Kanske inte mycket i ett litet projekt, men verkligen mycket i ett stort, där man vill skona prestandan.
Koden som jag använde för denna test:
import com.gskinner.utils.PerformanceTest;
var prestanda:PerformanceTest = PerformanceTest.getInstance();
prestanda.testFunction(test1, 40, "Genväg");
prestanda.testFunction(test2, 40, "Standard");
prestanda.testFunction(test3, 40, "Switch");
function test1():void{
2 == 3 ? trace("2 är lika med 3") : trace("2 är inte lika med 3");
};
function test2():void{
if( 2 == 3){
trace("2 är lika med 3");
}else{
trace("2 är inte lika med 3");
};
};
function test3():void{
switch(2==3){
case true:
trace("2 är lika med 3");
break;
case false:
trace("2 är inte lika med 3");
break;
};
};
Resultatet, som Flash gav mig var följande:
<blockquote>
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Genväg (40 iterations)
Player version: WIN 10,0,22,91 (debug)
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
method...................................................ttl ms...avg ms
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
Genväg 6 0.15
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Standard (40 iterations)
Player version: WIN 10,0,22,91 (debug)
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
method...................................................ttl ms...avg ms
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
Standard 7 0.18
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Switch (40 iterations)
Player version: WIN 10,0,22,91 (debug)
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
method...................................................ttl ms...avg ms
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
2 är inte lika med 3
Switch 5 0.13
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
» Kolla exempel SWF av gSkinner
» Ladda ner Performance Test från gSkinner
» Kolla på en tutorial av Lee Brimelow