JavaScript中的微秒计时
JavaScript中是否有具有微秒分辨率的计时功能?
我知道Chrome的timer.js,希望能够为其他友好的浏览器提供解决方案,例如Firefox,Safari,Opera,Epiphany,Konqueror等。我对支持任何IE均不感兴趣,但可以提供包括 IE 在内的_ 答案受欢迎的。
(鉴于JS中毫秒级计时的准确性很差,因此我不屏息!)
更新:timer.js宣传微秒分辨率,但仅将毫秒读数乘以1,000。通过测试和代码检查验证。失望了 :[
回答:
正如Mark Rejhon的答案所暗示的那样,现代浏览器中提供了一个API,该API可将亚毫秒分辨率的计时数据公开给脚本又名window.performance.now()
。
now()``Date.getTime()
在两个重要方面优于传统:
now()
是具有毫秒级分辨率的双精度数,代表自页面导航开始以来的毫秒数。它以分数形式返回微秒数(例如,值1000.123为1秒和123微秒)。now()
在单调增加。因为这是重要的Date.getTime()
可可能是跳跃式前进或后退,甚至在随后的调用。值得注意的是,如果OS的系统时间已更新(例如原子时钟同步),Date.getTime()
则也会更新。now()
保证总是单调增加,因此它不受操作系统的系统时间的影响-它将始终是挂钟时间(假设挂钟不是原子钟…)。
now()
可几乎每一个地方,用在new Date.getTime()
,+ new
Date和Date.now()
是。唯一的例外是,Date
与now()
时代不混合,如Date
基于UNIX的时期(自1970年以来的毫秒数),而now()
就是因为你的页面的导航启动(所以它会远小于毫秒数Date
)。
now()
在Chrome稳定版,Firefox15+和IE10中受支持。。
以上是 JavaScript中的微秒计时 的全部内容, 来源链接: utcz.com/qa/436087.html