5

JavaScript 中的 Date 对象在函数的分辨率(以毫秒为单位)方面执行不同的机器到机器和浏览器到浏览器。我发现大多数机器在 IE 上的分辨率约为 16 毫秒,而 Chrome 或 Firefox 的分辨率可能高达 1 毫秒。

JavaScript 或 IE 是否有其他功能可以提供更好的时间分辨率?我正在尝试以毫秒为单位捕获和记录keyDown时间keyUp,并且需要它在 +/- 10 毫秒或更短的范围内。

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

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

我的任务是寻找一种 JavaScript 日期时间方法,该方法将在浏览器中提供低于 10 毫秒的分辨率。替换或改进 Date() 的东西。

4

3 回答 3

2

由于您提到 Internet Explorer,我假设您在 Windows 上工作。您获得的 15 毫秒分辨率可能与 Windows 系统计时器分辨率有关。

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

我进行了相当多的搜索以查看是否可以在 Windows 中找到有关系统计时器分辨率的任何信息,并且能够从 TechNet找到到Inside Windows NT High Resolution Timers的链接。它提到了一点关于Windows系统计时器的分辨率:

Windows NT 的所有定时器支持都基于一个系统时钟中断,默认情况下以 10 毫秒的粒度运行。因此,这是标准 Windows 计时器的分辨率。

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

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

虽然与这个问题无关,但我也确实在 MSDN 上找到了一篇关于 Windows 上的高分辨率计时器的文章:mplement a Continuously Updating, High-Resolution Time Provider for Windows

于 2008-09-25T03:05:56.043 回答
2

台式机上的高分辨率计时仍然是一个开放的话题。

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

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

于 2008-09-25T03:52:48.410 回答
0

AFAIK,毫秒和 JavaScript 一样好。这是Date 对象的 Mozilla.org 文档。那里没有任何东西表明分辨率更高。

于 2008-09-25T02:53:23.420 回答