》windows vs 中的精确时间测量api(us)
以下是网络demo引用:
在定时前应该先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。接着在需要严格计时的事件发生前和发生之后分别调用QueryPerformanceCounter(),利用两次获得的计数之差和时钟频率,就可以计算出事件经历的精确时间us。注意printf一定要强制转换成double 或者float类型;
测试Sleep的精确时间:
#include <stdio.h>
#include <windows.h>
void main()
{
LARGE_INTEGER f;
LARGE_INTEGER t1;
LARGE_INTEGER t2;
QueryPerformanceFrequency(&f);
QueryPerformanceCounter(&t1);
Sleep(1000);
QueryPerformanceCounter(&t2);
printf("%f\n", (double)(t1.QuadPart-t2.QuadPart)/(double)f.QuadPart);
system("Pause");
}
结果为
0.999982
1.000088
1.000200
精确到us。