【发布时间】:2025-11-28 21:50:01
【问题描述】:
我有一个应用程序,我使用 gettimeofday 的 MinGW 实现在 Win7 上实现“精确”计时(~1ms 精度)。它工作正常。
但是,当在 Win10 上使用相同的代码(甚至是相同的 *.exe)时,精度急剧下降到著名的 15.6ms 精度,这对我来说还不够。
两个问题: - 你知道造成这种差异的根源是什么吗? (它是操作系统配置/“功能”吗?) - 我该如何解决?或者,更好的是,是否有一个与操作系统配置无关的精确计时器?
注意:std::chrono::high_resolution_clock 似乎也有同样的问题(至少它确实显示了 Win10 的 15.6 毫秒限制)。
【问题讨论】:
-
15.6 是正常值,这是您的 Win7 安装行为异常。调用 timeBeginPeriod() 或使用 QueryPerformanceCounter() 来获得亚微秒级的分辨率。 QPF 是最好的。
-
“不当行为”如何表现得更好?这是否来自配置选项?
-
正常和“更好”有相反的目标。电源使用很粗糙,你会很快耗尽笔记本电脑的电池。不是配置,通常是调用 timeBeginPeriod() 的程序或驱动程序。 Chrome is notorious for doing this。运行 powercfg -energy 找到 Win7 上的麻烦制造者。
-
哦,根据我对我测试过的各种不同计算机配置的了解,电源使用设置很有意义。您的组合 cmets 回答了我问题的所有方面。谢谢。
标签: c++ c++11 windows-7 mingw windows-10