Как измерить, как долго работает функция - PullRequest
0 голосов
/ 29 сентября 2011

Я пытаюсь сравнить производительность нескольких разных алгоритмов.Таким образом, было создано несколько функций, каждая из которых реализовала свой подход к решению одной и той же задачи.

Намерение было создать 2 объекта Date до и после запуска функции и сравнить их после слова ...

Проблема здесь в том, что мне нужно изменить код для него, так что, может быть, есть другой подход?Кто может подсказать?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Простой способ: Используйте 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 голос
/ 29 сентября 2011

Есть несколько способов сделать это с нуля, но я бы посоветовал попробовать Grant Skinner Performance Test .

.

В дополнение к возможности тестирования отдельных методов, он позволит вам настроить «Набор тестов», который позволит вам запускать тесты для нескольких методов несколько раз и усреднять результаты, чтобы найти оптимальную производительность.

Выше я ссылался на статью, объясняющую новейшую версию (2.0) вместо загрузки, надеюсь, вы найдете это полезным. Кроме того, у него есть несколько других статей об оптимизации, которые в худшем случае читают увлекательно и чаще всего неоценимо.

Мой любимый это его разговор: Быстрый, как вспышка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...