javascript执行时间各不相同

时间:2012-08-24 15:08:31

标签: javascript

我试图找出捕获语句执行时间的最佳方法。例如,js stmt所花费的时间,例如if(txt =='abc')。如果我使用console.time('test')/ console.endTime('test')对计算或简单的js代码(如下所示)来计算控制器输出每次执行代码时的时间变化。

在控制台上看到的差异有时是1位,2位到3位,以毫秒为单位,有时是1 ms,60 ms&有时800ms太顺序是不一致的。我甚至试过只运行一次&关闭浏览器&再次运行它以便其他GC&变量不是为了阻碍时间,但结果是相同的。几毫秒是不定的,但是如此巨大的差异很大,以获得明确的时间。那究竟什么是最好的&一致的方式让翻译时间执行。我们怎样才能找到最佳标准来证明哪种stmt在以某种方式编写或最佳使用时表现更好

var start = (new Date).getMilliseconds();
if(txt =='abc'){};
var diff = (new Date).getMilliseconds() - start;
console.log(diff);

* 所有测试均在FF中进行。也有不同的方法,如getMilliseconds,getTime& console.endTime一个接一个*

2 个答案:

答案 0 :(得分:1)

嗯..你正在使用两个非常不同的函数来检索当前的时间戳。

Date.prototype.getMilliseconds()

返回另一个(更短)的数字

Date.prototype.getTime()

因此,这一般不是一个好主意,很可能是您遇到问题的原因。如果您想衡量代码内,则应始终使用.getTime()或更好的Date.now()。两者都返回一个完整的时间戳号。

答案 1 :(得分:0)

这里的要点是执行此指令的时间在大多数情况下远小于0ms,所以我不明白你为什么会得到这些差异。如果我在我的机器上运行:

for (x = 0; x < 100; x++) {                       
    var start = (new Date).getMilliseconds();
    if(txt =='abc'){};
    var diff = (new Date).getMilliseconds() - start;
    print(diff);
}

我明白了:

0
0
0
0
...