標籤:.quad clu code 法線 start 佔用 調用 個數 計數
轉的地址:https://www.cnblogs.com/silentteen/p/7532855.html1.GetTickCount()函數
原理: GetTickCount()是擷取系統啟動後的時間間隔。通過進入函數開始定時,到退出函數結束定時,從而可以判斷出函數的執行時間(單位ms),這種時間也並非是函數或者演算法的真實執行時間,因為在函數和演算法線程不可能一直佔用CPU,對於所有判斷執行時間的函數都是一樣,不過基本上已經很準確,可以通過查詢進行定時。注意:GetTickCount()精確度有限,跟CPU有關,一般精確度在16ms左右,最精確也不會精確過10ms。
標頭檔:
include<windows.h>
測試:
int t1 = long t1 = GetTickCount(); //...測試代碼int t1 = long t2 = GetTickCount();cout << "已耗用時間:"<<(t2-t1) << endl;
2.高精度時控函數QueryPerformanceFrequency(),QueryPerformanceCounter()
原理:QueryPerformanceCounter()這個函數返回高精確度效能計數器的值,它可以以微妙為單位計時.但是QueryPerformanceCounter()確切的精確計時的最小單位是與系統有關的,所以,必須要查詢系統以得到QueryPerformanceCounter()返回的嘀噠聲的頻率.QueryPerformanceFrequency()提供了這個頻率值,返回每秒嘀噠聲的個數. 計算確切的時間是從第一次調用QueryPerformanceCounter()開始的假設得到的LARGE_INTEGER為nStartCounter,過一段時間後再次調用該函數結束的,設得到nStopCounter.兩者之差除以QueryPerformanceFrequency()的頻率就是開始到結束之間的秒數.由於計時函數本身要耗費很少的時間,要減去一個很少的時間開銷.但一般都把這個開銷忽略。
標頭檔:
#include<windows.h>
測試:
double time=0; double counts=0; LARGE_INTEGER nFreq; LARGE_INTEGER nBeginTime; LARGE_INTEGER nEndTime; QueryPerformanceFrequency(&nFreq); QueryPerformanceCounter(&nBeginTime);//開始計時 //...測試代碼QueryPerformanceCounter(&nEndTime);//停止計時 time=(double)(nEndTime.QuadPart-nBeginTime.QuadPart)/(double)nFreq.QuadPart;//計算程式執行時間單位為s cout<<"已耗用時間:"<<time*1000<<"ms"<<endl;
3.使用Boost庫中的timer
timer類可以測量時間的流逝,是小型計時器,提供毫秒層級的計時精度。
標頭檔:
#include<boost/timer.hpp>
測試:
timer t;//聲明計時器對象並開始計時 //...測試代碼cout<<"已耗用時間:"<<t.elapsed() <<"s"<<endl;//輸出已流失的時間
C++中幾種測試程式已耗用時間的方法<轉>