【发布时间】:2010-05-13 13:03:56
【问题描述】:
我想在 Windows 平台上以微秒精度计算函数的性能。
现在 Windows 本身具有毫秒粒度,那么我该如何实现呢。
我尝试了以下示例,但没有得到正确的结果。
LARGE_INTEGER ticksPerSecond = {0};
LARGE_INTEGER tick_1 = {0};
LARGE_INTEGER tick_2 = {0};
double uSec = 1000000;
// Get the frequency
QueryPerformanceFrequency(&ticksPerSecond);
//Calculate per uSec freq
double uFreq = ticksPerSecond.QuadPart/uSec;
// Get counter b4 start of op
QueryPerformanceCounter(&tick_1);
// The ope itself
Sleep(10);
// Get counter after opfinished
QueryPerformanceCounter(&tick_2);
// And now the op time in uSec
double diff = (tick_2.QuadPart/uFreq) - (tick_1.QuadPart/uFreq);
【问题讨论】:
-
你得到什么结果做?请注意,
Sleep不能保证在指定的时间内完全休眠;使用例如Sleep(1000)睡一秒钟,这样你就可以自己检查它是否在做或多或少正确的事情。 -
默默数数自己真的很快。
标签: c++ c windows performance precision