performance.now()Chrome中的时间不稳定?

时间:2014-05-20 15:20:05

标签: javascript performance

我正在使用performance.now来获取方法的开始和结束时间。我发现Firefox中的结果是相当一致的10-12毫秒。在Chrome中,时间差异很大,从30到70毫秒不等。

我并不担心Firefox运行速度更快(因为浏览器JS实现会有所不同),因为Chrome中遇到的结果广泛传播使得无法获得准确的结果。 this article中的评论似乎暗示Chrome实施在任何情况下都只能达到1毫秒 - 这是正确的吗?

是否有人对正在发生的事情或如何进行更准确和一致的绩效评估有任何建议?

2 个答案:

答案 0 :(得分:0)

这可能是两个问题之一。 performance.now()正在记录错误的时间(这似乎不太可能),或Chrome正在执行可变时间。

你应该做的是测试它是哪一个:使用Date.now()而不是performance来查找执行时间:如果它稳定,则问题出在performance.now(),否则就是Chrome

performance的主要优点是记录为它可以记录高达1微秒的准确度。但是,绝大多数问题都不太可能需要这样做,因此使用Date可能会让您感到厌烦。

答案 1 :(得分:0)

我知道这已经晚了,但是性能。现在是准确的,但是chrome的v8引擎对代码做了疯狂的优化,那就是不一致的结果。时间的变化是特定于案例的,因为v8会进行优化,如果你强制它进行去优化(例如,将变量类型从字符串更改为数字),它将花费大量的性能。 另外多次调用相同的纯函数将使v8引擎对其进行优化,因此它将在几次重复时几乎瞬间完成。

如果您与我分享代码,我可以帮助您解决具体案例。