我想在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/