C++中幾種測試程式已耗用時間的方法<轉>

來源:互聯網
上載者:User

標籤:.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++中幾種測試程式已耗用時間的方法<轉>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.