2013-04-02 60 views

回答

4

測量代碼執行時間的快速方法,我時常使用方法是:

var start_time:int = getTimer(); 

someComplexCode(); 

trace("execution time: ", getTimer()-start_time); 

這會給你以毫秒爲單位的數字。

3

這不是真的意味着基準測試,但Adobe Scout是一個了不起的分析器/性能測試儀。我一直在使用它從Web上的SWF文件到Adobe AIR應用程序到移動AIR應用程序。

0

您可以設置一個基準方法很容易:

function test(process:Function, repeat:int = 10):void 
{ 
    var time:Number = getTimer(); 
    while(--repeat >= 0) process(); 
    trace(getTimer() - time); 
} 

使用像這樣:

// See how long it takes to create 50,000 Sprites and 
// add them to the DisplayList. 
test(function() 
{ 
    var sprite:Sprite = new Sprite(); 
    addChild(sprite); 

}, 50000); 
0

大廈lostPixels' answer,我創建了一個功能類似於Python的timeit()功能。該函數重複指定的迭代次數的回調函數並返回最快的執行時間。默認值是1,000,000次迭代。

以下測試程序在我的機器上運行約391ms。沒有trace()聲明,測試需要執行少於1ms

TimeIt.as

package { 
    public class TimeIt { 
    import flash.utils.getTimer; 

    public static function timeIt(callback:Function, maxIterations:uint=1000000):int { 
     var start_time:int, duration:int, fastest_time:int = int.MAX_VALUE; 
     for (var i:int = 0; i < maxIterations; i++) { 
     start_time = getTimer(); 
     callback(); 
     duration = getTimer() - start_time; 
     if (duration < fastest_time) fastest_time = duration 
     } 
     return fastest_time; 
    } 
    } 
} 

Test.as

package { 
    public class Test { 
    public function Test() { 
     trace('Fastest Time:', TimeIt.timeIt(test, 10),'ms'); 
    } 

    public function test():void { 
     var k:int, m:int = 100; 
     for (var i:int = 0; i < m; i++) { 
     for (var j:int = 0; j < m; j++) { 
      k = m * i + j; 
      trace(k); 
     } 
     } 
    } 
    } 
} 

Main.mxml

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    initialize="init(event)"> 
    <fx:Script> 
     <![CDATA[ 
      protected function init(event:Event):void { 
       new Test(); 
      } 
     ]]> 
    </fx:Script> 
</s:Application>