QueryPerformanceCounter

QueryPerformanceCounter

这个想法是一个现有的项目非常频繁地使用TimeTimeTimes()(对于Windows目标)。

milliseconds = timeGetTime();

现在,可以用
double tmp = (double) lpPerformanceCount.QuadPart/ lpFrequency.QuadPart;
milliseconds = rint(tmp * 1000);

lpPerformanceCount.QuadPart和lpFrequency.QuadPart是从对QueryPerformanceCounter()和QueryPerformanceFrequency()的单个调用中获取的。
我知道Windows的内部是一种巫术,但是有人能破译出哪两个更准确或/和有更多的开销?
我怀疑精确度可能是相同的,但QueryPerformanceCounter的开销可能更少。但我没有确凿的数据来支持。
如果事实正好相反,我当然不会感到惊讶。
如果管理费用在任何方面都很小的话,我会更感兴趣的是在准确性上是否存在差异。

最佳答案

timeGetTime()的精度是可变的,基于上次使用的timeBeginPeriod。它永远不会超过一毫秒。QueryPerformanceCounter也是可变的,这取决于硬件支持。它永远不会比一微秒差。
它们都没有显著的开销,QPC可能有点重。你的问题还不清楚这是否对你有意义。我对此表示怀疑,但要衡量一下。与QPC。

关于c# - 有人可以解密timeGetTime()或QueryPerformanceCounter/QueryPerformanceFrequency具有较低的开销或/和准确性吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3407779/

10-10 11:59