c 計時函式的使用

2021-06-27 06:55:24 字數 1303 閱讀 4324

為了測試程式的效能,我們常常需要使用計時函式。在c++中提供了多種實現計時的方式。下面主要說明gettimeofday和clock函式的使用。

gettimeofday獲取的是當前精確時間(2023年1月1日到現在的時間),或者為執行計時,也可以稱之為牆上時間。在程式執行之前獲取一次時間,執行結束之後獲取一次時間,兩次時間之差就是程式真正的執行時間。

而clock為cpu的時間,其中包括使用者**,庫函式,系統呼叫等消耗的時間,但是不包括cpu的空閒時間(程序切換,等待訊息消耗的時間)。在多工的系統中,在涉及到程序切換的時候,clock能獲得某個單一程序在cpu中的執行時間。而gettimeofday只能獲得從程式開始執行到程式執行結束的時間,其中可能包括程序被切換出去的時間。

兩個函式的具體用法如下:

#include#include#include #includeusing namespace std;

struct timeval start1,end1;

clock_t begin, finish;

int main()

cout << sum << endl;

gettimeofday(&end1,null);

finish = clock(); //結束計時

double timeuse = end1.tv_sec - start1.tv_sec + (end1.tv_usec - start1.tv_usec)/1000000.0;

cout << "the time of gettimeofday is " << timeuse << endl; //列印結果

timeuse = (double)(finish - begin) / clocks_per_sec;

cout << "the time of clock is " << timeuse << endl; //列印結果

return 0;

}

執行結果

xiang@xiang:~/workspace/system_lib$ ./time

-1243309312

the time of gettimeofday is 3.09654

the time of clock is 2.92

明顯看出gettimeofday的時間長於clock的時間,其中可能就包括了程式被切換出去的而等待的時間。

在並行程式記錄時間的時候,為了獲取從程式開始到程式執行結束的時間一般使用gettimeofday.

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...

C 的幾種計時函式示例

評估一段 的執行時間時候,一般在 開始和結束位置放乙個時間戳,然後兩個時間戳相減即可。方法1和方法2的時間是一致的,方法3在linux上有時候不准。時間單位縮寫對應 s 秒 ms 毫秒 s 微秒 ns 納秒 1s 1000ms 1000 000 s 1000 000 000ns。精度情況 示例 的單...