利用系統滴答時間計算實際程式執行時間

2021-07-25 05:41:03 字數 842 閱讀 9338

1、前言

測試乙個程式的執行時間,時間包括使用者cpu時間、系統cpu時間、時鐘時間。之前獲取之前時間都是在程式的main函式用time函式實現,這個只能粗略的計算程式的執行時間,不能準確的獲取其他時間。在看《apue》時,書中有關程式時間測試程式,非常正規,提供這三個時間。如是,上網搜了一下,進行總結一下。

2、獲取方法

有兩種方法可以獲取,第一種是用time命令,time 程序。第二種是通過在程式中進行記錄,首先利用sysconf函式獲取時鐘滴答數,再用times獲取tms結構。

檢視times函式,man 2 tms,得到tms結構定義和times函式宣告如下:

複製**

**如下:

struct tms ;

複製**

**如下:

#include clock_t times(struct tms *buf);

注意:此處計算的時間是時鐘滴答數,需要除以系統時鐘滴答數,得出實際的秒數。

3、測試例子:

測試程式如下:

複製**

**如下:

#include

#include

#include

#include #define buffer_size  4 * 1024

int main()

測試結果如下所示:

採用time命令,測試結果如下所示:

程式自定義時鐘計算實際時間

專案有這樣乙個需求 需要知道某個動作發生的實際時間 注意是實際時間,不受修改系統時間的影響 ps 曾經使用執行緒去計算,定義乙個計數器,讓執行緒每隔1000ms 1。開始沒問題,第二天發現計算出來的時間和實際時間相差很大,估計是因為執行緒在某些時候睡眠了 如果 有人知道確切答案麻煩告訴我一聲,感謝。...

VC MFC中計算程式 系統執行時間

vc mfc中計算程式 系統執行時間 skyseraph dec.30th 2010 hqu latest modified date dec.30th 2010 hqu 法一 利用gettickcount函式 獲取程式執行時間 longt1 gettickcount 程式段開始前取得系統執行時間 ...

VC MFC中計算程式 系統執行時間

vc mfc中計算程式 系統執行時間 skyseraph dec.30th 2010 hqu latest modified date dec.30th 2010 hqu 法一 利用gettickcount函式 獲取程式執行時間 longt1 gettickcount 程式段開始前取得系統執行時間 ...