Windows下C++高精度时间测量

标签 c++ windows

我有兴趣在 Windows 中使用 C++ 测量精确到纳秒的特定时间点。这可能吗?如果不是,是否有可能获得至少以微秒为单位的特定时间?任何库都应该这样做,除非我认为可以使用托管代码。 谢谢

最佳答案

如果您有一个在多核计算机上运行的线程应用程序,QueryPerformanceCounter 可以(并且将会)返回不同的值,具体取决于代码执行的核心。请参阅this MSDN 文章。 (rdtsc 也有同样的问题)

这不仅仅是一个理论问题;这是一个问题。我们在应用程序中遇到了这个问题,不得不得出结论,唯一可靠的时间源是 timeGetTime,它只有 ms 精度(幸运的是,这在我们的例子中已经足够了)。我们还尝试修复线程的线程关联性,以保证每个线程始终从 QueryPerformanceCounter 获得一致的值,这确实有效,但绝对会降低应用程序的性能。

总而言之,Windows 上没有一个可靠计时器可以用于以微秒精度计时(至少在多核计算机上运行时不行)。

关于Windows下C++高精度时间测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501216/

相关文章:

c++ - 为什么我们使用 "__declspec(dllimport)"看起来毫无用处?

c++ - 在 C++ 中清除内存中的回车符

c++ - MFC:显示/隐藏分隔面板

windows - 通过修改 "start in"更改 Jupyter Notebook 启动文件夹不再起作用

c++ - Google Sparsehash 在不可平凡复制的类型上使用 realloc()

c++ - 虚拟继承情况下类的大小

java - 确保我正在使用我的软件而不是冒名顶替者。 Windows、Java、硬件

windows - shell\command\open 值的语法 - %1 vs %l vs %L

windows - 文件名中的 MS-DOS 时间戳

c++ - 在我的新游戏中找不到内存泄漏?