ActionScript - скорость профиля скрипта из кода? - PullRequest
0 голосов
/ 15 ноября 2010

Я пытаюсь описать скорость моего кода из кода, используя класс даты и операторы трассировки. это не очень хорошо получается.

package
{   
import flash.display.Sprite;

public class Test extends Sprite
    {
    public function Test()
        {
        var now:Date = new Date();
        var profileSpeedMark:Number = now.getMilliseconds();

        var myArray:Array = new Array();
        for (var i:Number = 0; i < 1000000; i++)
            myArray.push(Math.random());

        var profileSpeedResult:Number = now.getMilliseconds() - profileSpeedMark;
        trace(profileSpeedResult);
        }
    }
}

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

Ответы [ 2 ]

3 голосов
/ 15 ноября 2010

Удобно использовать функцию getTimer () в пакете flash.utils.

var t0:Number = getTimer();
computeSomeThing();
var t1:Number = getTimer();
trace("Time Elapsed: " + String(t1 - t0));
2 голосов
/ 15 ноября 2010

Проблема с тем, как вы работали в своем примере кода, заключается в том, что класс Date имеет фиксированное значение - вы сравниваете время перед тестами со временем перед тестами снова. Попробуйте создать другой объект Date после ваших тестов и потратить время на это:

var before:Date = new Date();
test();
var after:Date = new Date();
var timeTaken:Number = after.time - before.time;
...