Windows API一日一練 68 QueryPerformanceCounter函數
阿新 • • 發佈:2019-03-12
bool spa ews void ron output net counter size QueryPerformanceFrequency聲明如下:
WINBASEAPI
BOOL
WINAPI
QueryPerformanceCounter(
__out LARGE_INTEGER *lpPerformanceCount
);
WINBASEAPI
BOOL
WINAPI
QueryPerformanceFrequency(
__out LARGE_INTEGER *lpFrequency
);
lpPerformanceCount是返回定時器當前計數值。
QueryPerformanceFrequency 是返回定時器的頻率。
調用函數的例子如下:
#001 //精確時鐘查詢。
#002 //蔡軍生 2007/11/08 QQ:9073204 深圳
#003 void TestHighTimer(void)
#004 {
#005 //
#006 LARGE_INTEGER nFreq;
#007 LARGE_INTEGER nLastTime1;
#008 LARGE_INTEGER nLastTime2;
#009
#010 //獲取是否支持精確定時器。
#011 if (QueryPerformanceFrequency(&nFreq))
#012 {
#013 //
#014 const int nBufSize = 256;
#015 TCHAR chBuf[nBufSize];
#016
#017 //顯示定時器的頻率。
#018 wsprintf(chBuf,_T("LastTime=%I64d/r/n"),nFreq);
#019 OutputDebugString(chBuf);
#020
#021 //獲取定時器的值。
#022 QueryPerformanceCounter(&nLastTime1);
#023 wsprintf(chBuf,_T("LastTime=%I64d/r/n"),nLastTime1);
#024 OutputDebugString(chBuf);
#025
#026 Sleep(0);
#027
#028 //獲取定時器的值。
#029 QueryPerformanceCounter(&nLastTime2);
#030 wsprintf(chBuf,_T("LastTime=%I64d/r/n"),nLastTime2);
#031 OutputDebugString(chBuf);
#032
#033
#034 //計算時間是花費多少秒。
#035 float fInterval = nLastTime2.QuadPart - nLastTime1.QuadPart;
#036 swprintf(chBuf,nBufSize,_T("花費:%f/r/n"),fInterval/(float)nFreq.QuadPart);
#037 OutputDebugString(chBuf);
#038 }
#039
#040 }
分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net
精確的時間計時,有時候是非常必要的。比如播放多媒體時視頻與音頻的時間同步,還有在測試代碼的性能時,也需要使用到非常精確的時間計時。還有測試硬件的性能時,也需要精確的時間計時。這時就需要使用QueryPerformanceCounter來查詢定時器的計數值,如果硬件裏有定時器,它就會啟動這個定時器,並且不斷獲取定時器的值,這樣的定時器精度,就跟硬件時鐘的晶振一樣精確的。 函數QueryPerformanceCounter和再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net
Windows API一日一練 68 QueryPerformanceCounter函數