有没有人有任何提示或链接到图书馆来帮助AS3中的基准测试应用程序?我(希望)正在寻找Benchmark.js的内容,但是对于Flash和AIR。欢迎任何建议。
答案 0 :(得分:4)
我经常使用的一种快速测量代码执行时间的方法是:
var start_time:int = getTimer();
someComplexCode();
trace("execution time: ", getTimer()-start_time);
这将以毫秒为单位给出一个数字。
答案 1 :(得分:3)
这并不是真正意义上的基准测试,但Adobe Scout是一个出色的分析器/性能测试器。我一直在使用它,从用于Web的SWF到Adobe AIR应用程序再到移动AIR应用程序。
答案 2 :(得分:1)
您可以尝试使用此功能:Performance Test。另外,我发现了一些很好的信息here。
答案 3 :(得分: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);
答案 4 :(得分: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>