【发布时间】:2020-03-27 12:50:39
【问题描述】:
假设我想用直接的QueryPerformanceCounter Windows API 结果创建Clock。 QueryPerformanceCounter Windows API 返回一些计数器,该计数器应除以 QueryPerformanceFrequency 结果,从而产生以秒为单位的时间。
通常基于QueryPerformanceCounter 的Clock 会立即通过乘以某个句点并除以QueryPerformanceFrequency 将结果转换为某些单位。这就是 steady_clock 在 Windows 上的实现方式。
但假设出于性能原因,我想在真正需要之前避免分裂。所以time_point是直接QueryPerformanceCounter的值,而duration是这样的区别。而且我大部分时间都可以对这些值进行算术和比较,仅将最终结果转换为一些正常的duration 或time_point。
我相信这是可能的。我的问题是:这样的Clock 会完全兼容标准的Clock。
【问题讨论】:
-
你的意思是named requirement Clock?
-
是的,时钟命名要求
-
据我了解,
Clock的唯一要求是@idclev463035818 已经解释过的......所以Clock的概念就是满足这个要求。时间点可以是你想要的任何东西,它只需要表示从 epoch 传递了多少滴答声 -
我并没有真正解释它,但上面的链接确实列出了满足要求所需的所有内容,不是专家,但 afaik 它只是提供某些方法而不是
is_steady对语义的要求比较宽松 -
...所以,要回答您的问题,您必须出示您的代码。
标签: c++ c++11 query-performance performancecounter chrono