定时功能的精度/分辨率|如何量化

时间:2012-09-19 22:14:26

标签: javascript

任何人都可以就

提出建议 JavaScript中的时间

accuracy and precision

我需要以计算的准确度和精确度计算用户响应时间。

Date().getTime

是我正在考虑用于进行测量的功能。我认为准确度接近完美,但我想计算精度。

我想使用setTimeout()模拟用户,这样我就可以计算getTime()的精度。

setTimeOut()

这两个功能是否使用相同的时钟?如果一个变化说+ 10毫秒另一个也有效地使我的实验计算精度无用?

有人已经这样做了:

http://ejohn.org/blog/accuracy-of-javascript-time/

决议信息

https://bugzilla.mozilla.org/show_bug.cgi?id=363258

1 个答案:

答案 0 :(得分:1)

您应该阅读此article。它讨论了新的High resolution Timer并将其与当前的Date对象进行了比较。

Date.now()         //  1337376068250
performance.now()  //  20303.427000007

基本上有两个关键点:

  1.   

    performance.now()是自特定页面开始加载以来的浮点毫秒的度量

  2.   

    可能不太经常考虑的是,基于系统时间的Date对于真实用户监控也不是理想的。大多数系统运行守护进程,定期同步时间。时钟通常每15-20分钟调整几毫秒。按照这个速度,测量的10秒间隔的大约1%将是不准确的。

  3. 使用Date,您将获得毫秒分辨率,但无法保证其准确性。根据{{​​3}}规范:

      

    对于某些任务,此时间定义可能不够,因为它不允许亚毫秒级分辨率并且受制于系统时钟偏差。

    我建议你阅读这两篇文章,以便更清楚地了解这一点。