我试图找出捕获语句执行时间的最佳方法。例如,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一个接一个*
答案 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
...