【发布时间】:2011-01-25 17:47:19
【问题描述】:
如何在 Windows 上获取微秒分辨率时间戳?
我正在寻找比 QueryPerformanceCounter 和 QueryPerformanceFrequency 更好的东西(这些只能给你一个自启动以来经过的时间,如果它们在不同的线程上调用它们不一定准确 - 也就是说,QueryPerformanceCounter 可能返回不同不同 CPU 上的结果。还有一些处理器会调整频率以节省电量,这显然并不总是反映在他们的QueryPerformanceFrequency 结果中。)
有Implement a Continuously Updating, High-Resolution Time Provider for Windows,但好像不牢固。 When microseconds matter 看起来不错,但现在无法下载了。
另一个资源是Obtaining Accurate Timestamps under Windows XP,但它需要一些步骤,运行一个帮助程序和一些初始化程序,我不确定它是否适用于多个 CPU。
我还查看了 Wikipedia 文章 Time Stamp Counter,这很有趣,但没那么有用。
如果答案是用 BSD 或 Linux 来做这件事,那会容易得多,这很好,但我想确认这一点,并解释一下为什么这在 Windows 中如此困难而在 Windows 中如此容易Linux 和BSD。都是一样的好硬件...
【问题讨论】:
-
有没有例子说明如何在 Linux 或 BSD 中轻松实现?
-
您知道,如果您阅读 QueryPeformanceCounter,它会明确表示它在从不同线程调用时确实工作,并且不受电源影响保存。唯一的例外是有缺陷的 BIOS、驱动程序和/或硬件。在关闭 API 之前阅读文档;)