queryperformancefrequency用法
queryperformancefrequency() - 基本介紹
型別:win32api
原型:bool queryperformancefrequency(large_integer *lpfrequency);
作用:返回硬體支援的高精度計數器的頻率。
返回值:非零,硬體支援高精度計數器;零,硬體不支援,讀取失敗。
queryperformancefrequency() - 技術特點
供win9x使用的高精度定時器:queryperformancefrequency()和queryperformancecounter(),要求計算機從硬體上支援高精度定時器。需包含windows.h標頭檔案。
函式的原形是:
bool queryperformancefrequency(large_integer *lpfrequency);
bool queryperformancecounter (large_integer *lpcount);
資料型別largeinteger既可以是乙個作為8位元組長的整數,也可以是作為兩個4位元組長的整數的聯合結構,其具體用法根據編譯器是否支援64位而定。該型別的定義如下:
typeef union _ large_integer
;longlong quadpart;
} large_integer;
在定時前應該先呼叫queryperformancefrequency()函式獲得機器內部計時器的時鐘頻率。接著在需要嚴格計時的事件發生前和發生之後分別呼叫queryperformancecounter(),利用兩次獲得的計數之差和時鐘頻率,就可以計算出事件經歷的精確時間。
#include
#include
void main()
以上**:
再給出我寫的乙個fibonacci的例子:
#include #include #include #include #includeusing namespace std;
unsigned long fib1(unsigned long n)
unsigned long fib2(unsigned long n)
unsigned long m1 = 1, m2 = 1;
for (unsigned long i = 3; i <= n; i++)
return m2;
}int main()
{ large_integer nfreq;
large_integer nbegintime;
large_integer nendtime;
double time1 = 0, time2 = 0;
unsigned long result1 = 0;
unsigned long result2 = 0;
unsigned long fib_num = 45;
cout.precision(10);
cout.setf(cout.showpoint); //設定為始終輸出小數點後的數字,就是說 a = 3,它也輸出 3.00000 這
queryperformancefrequency(&nfreq);
queryperformancecounter(&nbegintime);
result1 = fib1(fib_num);
queryperformancecounter(&nendtime);
time1=(double)(nendtime.quadpart-nbegintime.quadpart)/(double)nfreq.quadpart;
cout<<"fib1: "<< fixed<
C 中獲取精確時間
程式中獲取精確的時間,有時是非常必要的。常用的是,在測試程式的效能時,需要使用到精確的時間計時。或者其他情況要用到精確的時間。這就要用到乙個函式queryperformancecounter 用法是從第一次呼叫queryperformancecounter 過一段時間後再次呼叫該函式結束的.兩者之差...
C 語言計算精確時間
c 語言標準庫包含了時間相關的api。但是所有的精確值都是秒為單位的。那如何精確到公釐或是更精準的計算時間差呢。有如下定義 define clocks per sec 1000000 extern clock t clock void clock t 返回的是cpu的時鐘數,而常量clocks pe...
C 中獲取精確時間
程式中獲取精確的時間,有時是非常必要的。常用的是,在測試程式的效能時,需要使用到精確的時間計時。或者其他情況要用到精確的時間。這就要用到乙個函式queryperformancecounter 用法是從第一次呼叫queryperformancecounter 過一段時間後再次呼叫該函式結束的.兩者之差...