0

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

有时在控制台上看到的差异有时是 1 位、2 位到 3 位(以毫秒为单位),即有时 1 毫秒、60 毫秒和有时 800 毫秒,顺序也不一致。我什至尝试只运行一次并关闭浏览器并再次运行它,以便其他 GC 和变量不会出现妨碍时间,但结果是相同的。几毫秒是不可理解的,但如此巨大的差异需要花费很多时间。那么究竟什么是让解释器执行时间的最佳且一致的方法。我们如何找到最佳标准来证明以某种方式编写或最好使用时哪个 stmt 性能更好

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

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

4

2 回答 2

1

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

Date.prototype.getMilliseconds()

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

Date.prototype.getTime()

所以这通常不是一个好主意,很可能是你的问题的原因。如果你想在代码中测量,你应该总是使用.getTime()or,更好,Date.now(). 两者都返回完整的时间戳编号。

于 2012-08-24T15:13:25.470 回答
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
...
于 2012-08-24T15:31:46.443 回答