在 Win32
系统上 boost::date_time::microsec_clock()
是使用 ftime
实现的,它只提供毫秒分辨率:Link to doc
Stackoverflow 上有一些问题/答案说明了这一点并链接了文档,但没有解释为什么会这样:
似乎有一些方法可以在 Windows 上实现微秒分辨率:
我感兴趣的是为什么 Boost 以这种方式实现它,而反过来可能有更合适的解决方案?
最佳答案
QueryPerformanceCounter
无法帮助您解决这个问题。它给你一个时间戳,但因为你不知道计数器何时开始,所以没有可靠的方法来计算它的绝对时间点。 boost::date_time 就是这样一个(用户可以理解的)时间点。
另一个不同之处在于,像 QueryPerformanceCounter 这样的计数器为您提供了一个稳定增加的计时器,而系统时间可能会受到用户的影响,因此可能会跳跃。
所以这两件事是针对不同的用例的。一个用于表示实时,另一个用于在软件中获取精确计时和基准测试。
GetSystemTimePreciseAsFileTime
似乎符合高分辨率绝对时间的要求。我猜它没有被使用,因为它需要 Windows8。
关于c++ - 为什么在 Windows 上没有微秒分辨率的 boost::date_time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23446577/