C 統計精確時間

2021-06-20 06:16:14 字數 1841 閱讀 7533

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 過一段時間後再次呼叫該函式結束的.兩者之差...