2008-09-25 71 views
5

JavaScript中的Date对象以毫秒为单位执行不同的机器到机器和浏览器到浏览器。我发现大多数机器在IE上的分辨率约为16毫秒,Chrome或Firefox的分辨率可能高达1毫秒。在JavaScript中,是否有一个毫秒级的一致分辨率的时间源?

是否还有其他功能可用于JavaScript或一般的IE浏览器,这将提供更好的时间分辨率?我试图以毫秒为单位捕获并记录keyDownkeyUp次,并且需要在+/- 10毫秒范围内或更少。

要查看此示例,请查看此页面的“新日期()的分辨率”部分。有一张带有测试按钮的表格,用于评估当前机器/浏览器的JavaScript时间分辨率,以毫秒为单位。有趣的是,Chrome定期获得1ms的分辨率。

http://www.merlyn.demon.co.uk/js-dates.htm#OV

我的追求是一个JavaScript日期时间的方法,这将使子10ms的跨浏览器的分辨率。用来替换或改进Date()的东西。

回答

0

AFAIK,毫秒级和JavaScript一样好。这里是Mozilla.org documentation for the Date object。那里没有任何东西表明有更好的分辨率。

+0

同意 - 我在Internet Explorer中发现,我看到的最佳分辨率是JavaScript中Date()对象的16毫秒刻度。然后在IE上寻找更好的解决方案。 1ms分辨率,在浏览器中保持一致,会摇滚! – WillR 2008-09-25 18:31:19

2

既然您提到Internet Explorer,我认为您正在使用Windows。您获得的15毫秒分辨率可能与Windows系统计时器分辨率有关。

我也注意到通过在Windows上运行Java程序,系统计时器的分辨率大约是16毫秒左右。 (使用System.currentTimeMillis()方法。)

我做了一个相当的搜索,看看是否可以在Windows中找到有关系统计时器分辨率的任何信息,并且能够从TechNet找到Inside Windows NT High Resolution Timers的链接。在 10毫秒的粒度

Windows NT的基地其所有的计时器 支持过一个系统时钟 中断,默认情况下运行:它提到有关Windows系统计时器的分辨率一点点。这是 因此标准的分辨率为 的Windows定时器。

(我假设Windows XP和Vista仍然有相同的计时器,认为这是NT的后代。)

除非Firefox和Chrome有自己的高分辨率定时器实现,我相信您在Windows平台上能够从浏览器获得的最佳分辨率将在10毫秒左右。

虽然这个问题不相关的,我也没找到高分辨率定时器在MSDN上的文章在Windows上:mplement a Continuously Updating, High-Resolution Time Provider for Windows

2

高分辨率时间是台式机上仍然是一个悬而未决的话题。

今天流行的操作系统仅为您提供10毫秒的粒度,因为这是他们的时钟计时器中断的频率。例如,您也可以在Linux手册页中找到10 ms。浏览器只会公开操作系统提供的定时器,并增加浏览器内部的开销。

也就是说,可以实现更高的粒度。但是,所有这些技术都是针对硬件设置的,而且不能期望它们在不久的将来通过JavaScript公开。

+0

我不知道操作系统,但浏览器似乎至少保持10毫秒,除了谷歌浏览器至少有1毫秒:http://ejohn.org/blog/javascript-in-chrome/ – enobrev 2008-09-25 12:21:04

相关问题