Prestanda i ActionScript 3 PDF  | Skriv ut |  Skicka sidan
Skrivet av Danel Kirch   
2009-11-22 02:56
ptOfta 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:

  1. Traditionel if-sats
if( 2 == 3){
 trace("2 är lika med 3");
}else{
 trace("2 är inte lika med 3");
};
  1. 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;
};
  1. 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:

  1. Switch-sats på 40 anrop gav totalt 5 ms och  1 anrop genomsnitt 0.13 ms per anrop
  2. Genväg på 40 anrop gav totalt 6 ms och 1 anrop genomsnitt 0.15 ms  per anrop
  3. 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


Bedöm artikeln:
( 1 Bedömning )
Skapad 2009-11-22 02:56 av Danel Kirch

Visad 600 gånger än så länge.

Senaste artiklarna av Danel Kirch


Medlemmar


Members Online: 0

Senaste registrerade

LisaRaichand : 22 april 2012 19:55pilu : 31 januari 2012 09:58Gostship99 : 07 januari 2012 19:37Director : 18 november 2011 05:44Dahlback : 17 november 2011 16:28mikwonwheels : 14 november 2011 13:20Kviddis : 04 oktober 2011 19:53buddha1966 : 25 september 2011 14:22idesign : 20 september 2011 08:45TxT : 05 september 2011 11:07ApelG : 05 september 2011 11:04
Partners
Adobe user group
fdt5-logo
TechSmith
Lynda user group
Apress user group
O´reilly user group
Peachpit user group
Friends Of Ed
Manning user group


RocketTheme Joomla Templates