gpt4 book ai didi

c++ - 具有直接 QueryPerformanceCounter 值的时钟是否符合 C++ 标准?

转载 作者:行者123 更新时间:2023-12-01 14:48:25 24 4
gpt4 key购买 nike

假设我想创建 Clock直接联系 QueryPerformanceCounter Windows API 结果。 QueryPerformanceCounter Windows API 返回一些应除以 QueryPerformanceFrequency 的计数器。结果,从而产生以秒为单位的时间。

通常 Clock基于 QueryPerformanceCounter将通过乘以某个周期并除以 QueryPerformanceFrequency 立即将结果转换为某些单位.就是这样steady_clock可以在 Windows 上实现。

但是假设出于性能原因,我想避免除法,直到真正需要为止。所以time_point直接QueryPerformanceCounter值,和 duration是这样的区别。大多数时候我可以对这些值进行算术和比较,转换为一些正常的 durationtime_point只有最后的结果。

我确定这是可能的。我的问题是:这样会不会Clock完全兼容标准Clock .

最佳答案

它不会完全兼容标准 Clock Requirements .但大多数情况下,它会编译并执行您想要的操作。不符合的部分是您必须为 period 指定一些内容。您的 time_point是基于。并且某些东西不一定对应于物理时间单位。

这无关紧要,直到您减去其中两个时间点,得到 duration ,然后比较 duration用一些确实代表物理时间的东西。然后你会得到运行时垃圾。

此外,如果您使用这样的 time_pointsleep_until , 或 wait_until ,那么您的程序将不会休眠或等待预定的时间。

这是一个基于 QueryPerformanceCounter 的计时时钟示例这确实用 QueryPerformanceFrequency 确定了物理单位:https://stackoverflow.com/a/15755865/576911

关于c++ - 具有直接 QueryPerformanceCounter 值的时钟是否符合 C++ 标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60886394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com