linux獲取程序執行時間方法示例

2021-09-13 17:50:52 字數 1649 閱讀 5896

linux獲取程序執行時間有兩種方法可以獲取,第一種是用time命令,time 程序。第二種是通過在程式中進行記錄,首先利用sysconf函式獲取時鐘滴答數,再用times獲取tms結構,詳細看下面的示例**

1、前言

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

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()

{int sc_clk_tck;

sc_clk_tck = sysconf(_sc_clk_tck);

struct tms begin_tms, end_tms;

clock_t begin, end;

system("date");

begin = times(&begin_tms);

sleep(2);

end = times(&end_tms);

printf("real time: %lf\n", (end - begin) / (double)sc_clk_tck);

printf("user time: %lf\n",

(end_tms.tms_utime - begin_tms.tms_utime) / (double)sc_clk_tck);

printf("sys time: %lf\n",

(end_tms.tms_stime - begin_tms.tms_stime) / (double)sc_clk_tck);

printf("child user time: %lf\n",

(end_tms.tms_cutime - begin_tms.tms_cutime) / (double)sc_clk_tck);

printf("child sys time: %lf\n",

(end_tms.tms_cstime - begin_tms.tms_cstime) / (double)sc_clk_tck);

return 0;

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

linux 獲取程序執行時間

獲取程序執行時間 一 時間概念 在linux下進行程式設計時,可能會涉及度量程序的執行時間。linux下程序的時間值分三種 時鐘時間 real time 指程序從開始執行到結束,實際執行的時間。使用者cpu時間 user cpu time 指程序中執行使用者指令所用的時間,也包括子程序。系統cpu時...

獲取程式執行時間

獲取程式執行時間,對程式效能進行度量。include double start clock 段 system 程式名.exe 僅對於dos double end clock double time double end begin clocks per sec 1000 ms include dwo...

獲取sql執行時間

sql server中獲取要執行的sql或sql塊的執行時間,方法之一如下 declare begin datetime,end datetime set begin getdate your sql set end getdate print datediff millisecond,begin,...