【发布时间】:2012-11-03 07:23:38
【问题描述】:
我已经看到很多关于 windows 中高精度计时器的问题,但我真正需要的是能够在 windows 中提供比 GetLocalTime() 提供的 10-15ms 粒度更准确的时钟时间。
我找不到任何现有的简单解决方案,所以我想出了一个我自己的解决方案,并没有完全被淘汰,但基本的想法一直有效到午夜。在这里分享它,以便对其他人有所帮助。
在程序启动时存储一个锚点时间,并使用 timeGetTime() 以毫秒为单位获取系统正常运行时间(粒度小于 1 毫秒)并相应地调整锚点时间。
代码在答案中。
【问题讨论】:
-
如果您可以使用 .NET,您可能需要使用秒表 (msdn.microsoft.com/en-us/library/…)
-
这并不比 GetLocalTime() 更准确,并且如果 Windows 调整其实时时钟以匹配现实(它会定期使用 NTP),那么准确度会大大降低。然而,它更精确。
-
唉,这是一个 c++ 程序,没有 .net
-
我使用 QueryPerformanceCounter() 编写了另一个版本,认为 timegettime 并不是那么热(虽然它应该比我阅读文档的方式更好 getlocaltime() ,也许我错了)但是我让 QueryPerformanceCounter 版本运行了一天,它也与时钟不同步。我认为没有办法做到这一点。
-
哦,感谢投票否决这个问题的人。