QueryPerformanceFrequency用法

返回值:非零,硬件支持高精度计数器;零,硬件不支持,读取失败。

QueryPerformanceFrequency() -技术特点

函数的原形是:

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

BOOL QueryPerformanceCounter (LARGE_INTEGER *lpCount);

typeef union _ LARGE_INTEGER

{

struct

{

DWORD LowPart;

LONG HighPart;

};

LONGLONG QuadPart;

} LARGE_INTEGER;

在定时前应该先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。接着在需要严格计时的事件发生前和发生之后分别调用QueryPerformanceCounter(),,利用两次获得的计数之差和时钟频率,就可以计算出事件经历的精确时间。

测试Sleep的精确时间:

#include<stdio.h>

#include<windows.h>

voidmain()

{

LARGE_INTEGERnFreq;

LARGE_INTEGERnBeginTime;

LARGE_INTEGERnEndTime;

doubletime;

QueryPerformanceFrequency(&nFreq);

QueryPerformanceCounter(&nBeginTime);

Sleep(1000);

QueryPerformanceCounter(&nEndTime);

time=(double)(nEndTime.QuadPart-nBeginTime.QuadPart)/(double)nFreq.QuadPart;

printf("%f\n",time);

Sleep(1000);

system("Pause");

}

结果为

0.999982

1.000088

1.000200

等,所以Sleep的精度还是比较低的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

天上永远不会掉馅饼,不要因为贪图一时的快乐而付出惨痛的代价,

QueryPerformanceFrequency用法

相关文章:

你感兴趣的文章:

标签云: