我正在使用函数来确定运行另一个函数所需的时间,这样我就可以看到我的代码运行了多长时间。
以下是代码:
public function profileCall(repeatCount:int, method:Function, ...args):String {
var time:int = getTimer(); // returns time in milliseconds since app start
var average:Number;
for (var i:int; i < repeatCount; i++) {
method.apply(null, args);
}
time = getTimer()-time;
average = repeatCount>0? time/repeatCount:0;
return average;
}
var result:String = profileCall(myCode, 1000);
trace("Time taken: " + result); // Time taken: .01
我认为它有效但后来我注意到在一次测试中我是否运行了100次它说0.1。如果我运行它1000它说.01,在10000它说.001。
它是否变得更准确或是否存在误判?我知道在多次调用时CPU会缓存调用,这可以减少执行时间,但数字看起来不正确。请原谅我,如果这是一个基本问题,那就是漫长的一天。
注意:语言无关紧要。
答案 0 :(得分:1)
你做得对,但是......在大多数情况下,AS3并不那么慢
var aTime:int = getTimer();
// ... do something
trace(getTimer() - aTime);
由于此操作的精度较低,将花费0到1毫秒。为了评估某些代码块的性能,您可能需要在1 000 000甚至10 000 000次迭代的循环中运行它并测量整个执行时间。