c++ - 为什么在 Windows 上没有微秒分辨率的 boost::date_time?

标签 c++ windows boost time boost-date-time

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/

相关文章:

c++ - 包含问题和包含 guard

c++ - 在 C++ Builder 中使用 COM

c - 套接字失败后重写

windows - 什么是 DosDevice?

c++ - 在 boost-variant 中调用匹配类型的析构函数

c++ - boost 中默认的随机数生成器种子是什么?

c++ - 用纯虚拟类 copy-and-swap 成语

c++ - 使用函数将字符串转换为整数

c# - Windows 路径中的多个反斜杠会产生什么后果(如果有的话)?

c++ - boost iostream : how to turn ifstream into memory mapped file?