c納秒級計時器 C 11 計時器!真香

2021-10-13 22:42:59 字數 1453 閱讀 2787

​ 在我們寫程式過程中,有時候需要測試我們的程式語句執行時間的耗時,當前也是有很多的庫提供我們去使用,一直沒有良好的跨平台的庫可以提供出來;而且一般這種**也是由我們程式設計師自己呼叫系統的庫來進行,但是往往會出現精度不足和不支援跨平台等問題;

​ 他來了。。。他來了。。,他踩著七彩祥雲來了;「他」就是c++11中引進boost中的chrono庫;他可實現高精度時鐘,可以做到納秒級;

​ 在c++11中,是標準模板庫中與時間有關的標頭檔案。該標頭檔案中所有函式與類模板均定義在std::chrono命名空間中;

這裡主要介紹時間點和時鐘兩個點:

​ 一般計時器就是從某個時間點開始,然後到某個時間點之間的計數,就是我們一般稱之為耗時;

時間點:

template class time_point;
std::chrono::time_point 表示乙個具體時間

第乙個模板引數clock用來指定所要使用的時鐘,在標準庫中有三種時鐘,分別為:

第二個模板函式引數用來表示時間的計量單位(特化的std::chrono::duration<> )

時間點都有乙個時間戳,即時間原點。chrono庫中採用的是unix的時間戳2023年1月1日 00:00。所以time_point也就是距離時間戳(epoch)的時間長度(duration)。

知道了這些,我們去實現一下開始說的高精度計時器:

#ifndef _timerclock_hpp_

#define _timerclock_hpp_

#include #include using namespace std;

using namespace std::chrono;

class timerclock

~timerclock()

void update()

//獲取秒

double gettimersecond()

//獲取毫秒

double gettimermillisec()

//獲取微妙

long long gettimermicrosec()

private:

time_point_start;

};#endif

測試:

#include "timerclock.hpp"

int main()

cout << "cost time:" << tc.gettimermillisec() <

cout << "cost time:" << tc.gettimermicrosec() << "us" << endl;

return 0;

}

結果:

類似這種比較高精度的測試,我們可以使用在我們專案**中進行使用,可以計算出我們程式的耗時,可以進行優化;

高精度納秒計時器

ktimer.h windows graphics programming win32 gdi and directdraw?feng yuan publisher prentice hall ptr first edition december 01,2000 高精度納秒計時器,最後修改 2008...

RDTSC指令實現納秒級計時器

原文 x86 platform 從pentium開始,很多80x86微處理器都引入tsc,乙個用於時間戳計數器的64位的暫存器,它在每個時鐘訊號 clk,clk是微處理器中一條用於接收外部振盪器的時鐘訊號輸入引線 到來時加一。通過它可以計算cpu的主頻,比如 如果微處理器的主頻是1mhz的話,那麼t...

c 微秒級計時器

queryperformancecounter 這個函式返回高精確度效能計數器的值,它可以以微秒為單位計時.但是queryperformancecounter 確切的精確計時的最小單位是與系統有關的,所以,必須要查詢系統以得到queryperformancecounter 返回的嘀噠聲的頻率.que...