如何测量功能的工作时间

时间:2011-09-29 18:27:10

标签: actionscript-3 function optimization time

我试图比较几种不同算法的性能。因此创建了几个函数,每个函数都实现了解决相同任务的不同方法。

我们想要做的是在函数运行之前和之后创建2个Date对象,并在之后比较它们......

这里的问题是我需要修改它的代码,所以可能还有另一种方法吗?谁可以建议?

2 个答案:

答案 0 :(得分:2)

简单方法: 启动时使用getTimer(),然后检查并比较功能何时完成。

示例:http://wonderfl.net/c/d5WS

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