評估一段**的執行時間時候,一般在**開始和結束位置放乙個時間戳,然後兩個時間戳相減即可。方法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...