QueryPerformanceFrequency()

類型:Win QueryPerforman ceFrequen

基本介紹

類型:Win32API

原型:BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

作用:返回硬體支持的高精度計數器的頻率。

返回值:非零,硬體支持高精度計數器;零,硬體不支持,讀取失敗。

技術特點

供WIN9X使用的高精度定時器:QueryPerformanceFrequency()和QueryPerformanceCounter(),要求計算機從硬體上支持高精度定時器。

函式的原形是:
BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
BOOL QueryPerformanceCounter (LARGE_INTEGER *lpCount);

數據類型LARGEINTEGER既可以是一個作為8位元組長的整數,也可以是作為兩個4位元組長的整數的聯合結構,其具體用法根據編譯器是否支持64位而定。該類型的定義如下:
typeef union _ LARGE_INTEGER
{
struct
{
DWORD LowPart;
LONG HighPart;
};
LONGLONG QuadPart;
} LARGE_INTEGER;

在定時前應該先調用QueryPerformanceFrequency()函式獲得機器內部計時器的時鐘頻率。接著在需要嚴格計時的事件發生前和發生之後分別調用QueryPerformanceCounter(),利用兩次獲得的計數之差和時鐘頻率,就可以計算出事件經歷的精確時間。測試函式SLEEP(100)的精確持續時間方法:
LARGE_INTEGER litmp;
LONGLONG qt1,qt2;
double dft,dff,dfm;
QueryPerformanceFrequency(&litmp);//獲得時鐘頻率
dff=(double)litmp.QuadPart;
QueryPerformanceCounter(&litmp);//獲得初始值
qt1=litmp.QuadPart;Sleep(100);
QueryPerformanceCounter(&litmp);//獲得終止值
qt2=litmp.QuadPart;
dfm=(double)(qt2-qt1);
dft=dfm/dff;//獲得對應的時間值

需要注意的是DFT計算的結果單位是秒。

套用平台

 在此處添加文本內容

發展歷程

 在此處添加文本內容

相關技術

 在此處添加文本內容

主要成果

 在此處添加文本內容

實用教程

 在此處添加文本內容

相關詞條

相關搜尋

熱門詞條

聯絡我們