C 的幾種計時函式示例

2021-10-13 10:28:46 字數 1506 閱讀 7464

評估一段**的執行時間時候,一般在**開始和結束位置放乙個時間戳,然後兩個時間戳相減即可。方法1和方法2的時間是一致的,方法3在linux上有時候不准。

時間單位縮寫對應:s(秒),ms(毫秒), μs(微秒),ns(納秒)。1s=1000ms=1000 000μs=1000 000 000ns。

精度情況:

示例**的單位都是毫秒,可根據需求自行換算。

//方法1,標準庫

#include struct timeval tv;

gettimeofday(&tv,null);

auto b1=(unsigned long long)tv.tv_sec*1000+(unsigned long long)tv.tv_usec/1000;

sleep(1);

gettimeofday(&tv,null);

auto b2=(unsigned long long)tv.tv_sec*1000+(unsigned long long)tv.tv_usec/1000;

cout<<"method 1, cost time is:"<<(b2-b1)auto t1= duration_cast(steady_clock::now().time_since_epoch()).count();

sleep(1);

auto t2=duration_cast(steady_clock::now().time_since_epoch()).count();

cout<<"method 2, cost time is:"<<(t2-t1)<(end - begin).count()sleep(1);

clock_t c2=clock();

cout<<"method 3, cost time is:"<<(c2-c1)<chrono時鐘方法的拓展

chrono庫主要包含了三種型別:時間間隔duration、時鐘clocks和時間點time point。

chrono方法獲得時間點主要是通過clock時鐘獲得的。一共有三個時鐘如下:

cout << std::chrono::duration_cast( t2-t1 ).count() <<」 microseconds」<< endl;

輸出:20 microseconds

時鐘間隔duration的換算chrono提供了如下模板,預設納秒。

time_point表示乙個時間點,用來獲取1970.1.1以來的秒數和當前的時間。time_point必須要clock來計時,time_point有乙個函式time_since_epoch()用來獲得2023年1月1日到time_point時間經過的duration。下面的例子計算當前時間距離2023年1月一日有多少小時:

cout<< duration_cast(system_clock::now().time_since_epoch()).count()《參考:

c 計時函式的使用

為了測試程式的效能,我們常常需要使用計時函式。在c 中提供了多種實現計時的方式。下面主要說明gettimeofday和clock函式的使用。gettimeofday獲取的是當前精確時間 1970年1月1日到現在的時間 或者為執行計時,也可以稱之為牆上時間。在程式執行之前獲取一次時間,執行結束之後獲取...

C語言的計時函式

include time.h 最常用的無疑是time函式,用法如下 int start,end start time null 獲得當前系統執行時間 處理事件 end time null 獲得處理完事件後系統執行時間 put end start 但是time函式用來計時並不是特別的精確,只是精確到s...

C 程式計時函式

有時候需要對程式某個部分進行計時 上 double timecost total 0 large integer m nfreq large integer m nbegintime large integer nendtime inline void starttiming inline void...