給定一段獲取**段效能的**:
#include #include large_integer larger_integer;
long long c1, c2;
double dff;
queryperformancefrequency(&larger_integer);//獲得時鐘頻率
dff = larger_integer.quadpart;
queryperformancecounter(&larger_integer);//查詢效能計數器,獲得初始值
c1 = larger_integer.quadpart;
function();//待獲取引數**段
queryperformancecounter(&larger_integer);//獲得終止值
c2 = larger_integer.quadpart;
double ntime = (c2 - c1) / dff;//獲得對應的時間值,時間單位是秒
cout << typeid(dff).name() << endl;
cout << typeid(c1).name() << endl;
cout << typeid(ntime).name() << endl;//double型別
關於其中的幾個函式,要求計算機從硬體上支援高精度定時器。
函式的原形是:
bool queryperformancefrequency(large_integer *lpfrequency);
bool queryperformancecounter (large_integer *lpcount);
queryperformancefrequency()
型別:win32api
原型:bool queryperformancefrequency(large_integer *lpfrequency);
作用:返回硬體支援的高精度計數器的頻率。
返回值:非零,硬體支援高精度計數器;零,硬體不支援,讀取失敗。
資料型別largeinteger既可以是乙個作為8位元組長的整數,也可以是作為兩個4位元組長的整數的聯合結構,其具體用法根據編譯器是否支援64位而定。該型別的定義如下:
typeef union _ large_integer
;longlong quadpart;
} large_integer;
在定時前應該先呼叫queryperformancefrequency()函式獲得機器內部計時器的時鐘頻率。接著在需要嚴格計時的事件發(e,g, function)生前和發生之後分別呼叫queryperformancecounter(),利用兩次獲得的計數之差和時鐘頻率,就可以計算出事件經歷的精確時間。
Windows Linux高精度計時器 C
linux windows 系統高精度計時器 ifndef lx timer h define lx timer h ifdef win32 include elif linux include endif class lxtimer endif include lxtimer.h ifdef wi...
api級高精度計時
c include include using namespace std int main int argc,char argv if queryperformancecounter ref start 計時 開始 int x for int i 0 i 1000000000 i 計時 結束 if...
關於高精度計時器
關於高精度計時器 一 毫秒級精度 1 net system.environment.tickcount 獲取系統啟動後經過的毫秒數,包裝了gettickcount 2 winapi gettickcount dllimport kernel32 static extern uint gettickc...