我想在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);

最佳答案

循环运行该操作大约一百万次,然后将结果除以该数字。这样,您将获得许多次执行的平均执行时间。由于多任务处理和其他原因,定时执行一次(甚至一百次)非常快速的操作是非常不可靠的。

关于c++ - 如何以微秒精度计算操作时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2826948/

10-10 11:29