Linux 如何取进程运行时间,linux -- 获取进程执行时间
獲取進程執行時間
一、時間概念
在linux下進行編程時,可能會涉及度量進程的執行時間。linux下進程的時間值分三種:
時鐘時間(real time):指進程從開始執行到結束,實際執行的時間。
用戶CPU時間(user CPU time):指進程中執行用戶指令所用的時間,也包括子進程。
系統CPU時間(system CPU time):指為進程執行內核程序所經歷的時間,例如調用read和write內核方法時,消耗的時間就計入系統CPU時間。
二、獲取方法
有兩種方法可以獲取,第一種是用time命令,time 進程。第二種是通過在程序中進行記錄,首先利用sysconf函數獲取時鐘滴答數,再用times獲取tms結構。
查看times函數,man 2 tms,得到tms結構定義和times函數聲明如下:
struct tms {
clock_t tms_utime; /* user time */
clock_t tms_stime; /* system time */
clock_t tms_cutime; /* user time of children */
clock_t tms_cstime; /* system time of children */
};
#include
clock_t times(struct tms *buf);
注意:此處計算的時間是時鐘滴答數,需要除以系統時鐘滴答數,得出實際的秒數。
三、測試例子
測試程序如下:
#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();
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 ;
}
測試結果如下所示:
采用time命令,測試結果如下所示:
其中real表示時鐘時間,user表示用戶CPU時間,sys表示系統CPU時間。time命令也可以用于系統的命令,如time ls、time ps等等。
參考:http://www.cnblogs.com/Anker/p/3416288.html
Linux獲取進程執行時間
1.前言 ? ?測試一個程序的執行時間,時間包括用戶CPU時間.系統CPU時間.時鐘時間.之前獲取之前時間都是在程序的main函數用time函數實現,這個只能粗略的計算程序的執行時間,不能準確的獲取其 ...
Unix/Linux獲取進程的詳細信息
Linux的進程的信息都記錄在/proc//下面,其實常用的ps.top命令也是從這里讀取信息的.常用的信息有: cmd(命令).cmdline(完整的命令行參數).envrio ...
Linux獲取進程中變量
列出所有進程 #include #include #include ...
Windows與Linux獲取進程集合的方法
Windows: List tasklist=new ArrayList(); try { Process process = Runtime. ...
Linux常用獲取進程占用資源情況手段
測試環境:Ubuntu14.04 1.? 獲取進程ID號 ps -aux | grep your_process_name 例如: xxx@xxx:~$ ps -e |grep Midlet|awk ...
linux: 獲取監聽指定端口的進程PID
在 linux 下經常需要殺死(重啟)監聽某端口的進程, 因此就寫了一個小腳本, 通過 ss 命令獲取監聽制定端口的進程 PID, 然后通過 kill 命令結束掉進程: #!/bin/sh # set ...
linux中使用top獲取進程的資源占用信息
在linux中使用top獲取進程的資源占用信息: Cpu(s): ?1.0%us, ?0.0%sy, ?0.0%ni, 98.3%id, ?0.7%wa, ?0.0%hi, ?0.0%si, ?0.0 ...
linux命令(26):Bash Shell 獲取進程 PID
轉載地址:http://weyo.me/pages/techs/linux-get-pid/ 根據pid,kill該進程:http://www.cnblogs.com/lovychen/p/54113 ...
linux shell 獲取進程pid
1.通過可執行程序的程序名稱 a.運行程序 b.獲取進程id號 c.pidof相關知識:http://www.cnblogs.com/yunsicai/p/3675938.html 2.有些程序需要在 ...
隨機推薦
029. aps.net中DataView中詳細信息的跳轉顯示
點擊當前頁面的連接, 跳轉到另一個頁面, 然后進行更新刪除等一系列操作 主要代碼:
用任務管理器畫CPU正弦曲線
這個最初是在microsoft的中看到的,用你的程序來控制CPU的使用率. 首先是要求寫一個用來實現CPU使用率為50%程序. 這個還是很好實現的,只要讓你的程序忙的時間課空閑 ...
c++中的array數組和vector數組
我覺得實驗一下會記得比較牢,話不多直接上代碼. 下面是array數組,感覺用的不多. //cpp 風格數組 array #include #include
PDF轉換成二進制字符串寫入 HTTP 輸出流
最近項目需要做電子簽章,需要網頁打開PDF簽章后保存:正好復習哈二進制和流的轉換: 文件轉換成二進制字符串寫入HTTP輸出流 protected void Page_Load(object sende ...
setPluginsEnabled(true) 誰知道android的4.3之后為什么會報錯
我也是最近才遇到這個問題的,查了下資料,setPluginEnable已經棄用了,使用webSettings.setPluginState(WebSettings.PluginState.ON);可以 ...
myBatis 基礎測試 表關聯關系配置 集合 測試
myBatis 基礎測試 表關聯關系配置 集合 測試 測試myelipse項目源碼 sql 下載?http://download.csdn.net/detail/liangrui1988/599388 ...
Java 和Oracle的數據類型
一.BigDecimal BigDecimal 由任意精度的整數非標度值 和 32 位的整數標度 (scale) 組成. 如果為零或正數,則標度是小數點后的位數. 如果為負數,則將該數的非標度值乘以 ...
win10 設置默認輸入法為英文,ctrl +shift切換中文
控制面板-更改輸入法,這個界面出現的是電腦現在安裝的語言,每個語言中可能有多個輸入法,比如我的有微軟的和qq的,誰在上誰就是系統的默認語言(本人當然是中文在上),英文中有美式鍵盤. 如果想要電腦啟動的 ...
expdp用戶10遷移到新環境11之正式實施
expdp遷移源端數據庫:cu? ? 源端IP:? ?源端schema: xxx目標數據庫:ora 目標IP:xxx操作流程:31日凌晨應用停,隨后使用數據泵遷移,兩套庫遷移,遷移一套,遷移完畢應用確 ...
css學習1
1.標簽的權值為1,類選擇符的權值為10,ID選擇符的權值最高為100 注意:還有一個權值比較特殊--繼承也有權值但很低,有的文獻提出它只有0.1,所以可以理解為繼承的權值最低.
總結
以上是生活随笔為你收集整理的Linux 如何取进程运行时间,linux -- 获取进程执行时间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦幻西游解绑将军令方法
- 下一篇: Linux下svn新建用户,Linux下