我试图比较几种不同算法的性能。因此创建了几个函数,每个函数都实现了解决相同任务的不同方法。
我们想要做的是在函数运行之前和之后创建2个Date对象,并在之后比较它们......
这里的问题是我需要修改它的代码,所以可能还有另一种方法吗?谁可以建议?
答案 0 :(得分:2)
简单方法:
启动时使用getTimer()
,然后检查并比较功能何时完成。
package
{
import flash.display.Sprite;
import flash.utils.getTimer;
import flash.text.TextField;
public class FlashTest extends Sprite
{
private var _debugText : TextField;
public function FlashTest()
{
var timeStarted : int = getTimer();
var timeCompleted : int;
runReallyWackyFunction();
timeCompleted = getTimer();
setupDebugText("total time: " + (timeCompleted - timeStarted) + "ms");
}
private function setupDebugText(message : String) : void
{
_debugText = new TextField();
_debugText.x = 20;
_debugText.y = 20;
_debugText.textColor = 0xFFCC00;
_debugText.backgroundColor = 0x000000;
_debugText.background = true;
_debugText.autoSize = "left";
_debugText.text = message;
addChild(_debugText);
}
private function runReallyWackyFunction() : void
{
// put wacky stuff here
var testUpdates : int = 300000;
while(testUpdates--)
{
with(graphics)
{
beginFill(Math.random()*0x000000, 0.25);
drawCircle(Math.random() * stage.width, Math.random() * stage.height, 10);
endFill();
}
}
}
}
}
答案 1 :(得分:1)
有几种方法可以从头开始,但我建议尝试Grant Skinner的Performance Test。
除了能够测试单个方法之外,它还允许您设置“测试套件”,允许您多次对多个方法运行测试,并对结果进行平均以找到最佳性能。
上面,我已经链接到解释最新版本(2.0)而不是下载的文章,希望您觉得这很有帮助。此外,他还有其他一些关于优化的条目,这些条目在最坏的情况下是一个引人入胜的读物,并且更经常地提供非常有用的帮助。
我最喜欢的是他的演讲: Quick as a Flash