標籤:c class code tar http a
Linux系統使用time計算命令執行的時間
當測試一個程式或比較不同演算法時,執行時間是非常重要的,一個好的演算法應該是用時最短的。所有類UNIX系統都包含time命令,使用這個命令可以統計時間消耗。例如:
[[email protected] ~]# time lsanaconda-ks.cfg install.log install.log.syslog satools textreal 0m0.009suser 0m0.002ssys 0m0.007s
輸出的資訊分別顯示了該命令所花費的real時間、user時間和sys時間。
real時間是指掛鐘時間,也就是命令開始執行到結束的時間。這個短時間包括其他進程所佔用的時間片,和進程被阻塞時所花費的時間。
user時間是指進程花費在使用者模式中的CPU時間,這是唯一真正用於執行進程所花費的時間,其他進程和花費阻塞狀態中的時間沒有計算在內。
sys時間是指花費在核心模式中的CPU時間,代表在核心中執系統調用所花費的時間,這也是真正由進程使用的CPU時間。
shell內建也有一個time命令,當運行time時候是調用的系統內建命令,應為系統內建的功能有限,所以需要時間其他功能需要使用time命令可執行二進位檔案/usr/bin/time。
使用-o選項將執行時間寫入到檔案中:
/usr/bin/time -o outfile.txt ls
使用-a選項追加資訊:
/usr/bin/time -a -o outfile.txt ls
使用-f選項格式化時間輸出:
/usr/bin/time -f "time: %U" ls
-f選項後的參數:
| 參數 |
描述 |
| %E |
real時間,顯示格式為[小時:]分鐘:秒 |
| %U |
user時間。 |
| %S |
sys時間。 |
| %C |
進行計時的命令名稱和命令列參數。 |
| %D |
進程非共用資料區域,以KB為單位。 |
| %x |
命令退出狀態。 |
| %k |
進程接收到的訊號數量。 |
| %W |
進程被交換出主存的次數。 |
| %Z |
系統的頁面大小,這是一個系統常量,不用系統中常量值也不同。 |
| %P |
進程所擷取的CPU時間百分百,這個值等於user+system時間除以總共的已耗用時間。 |
| %K |
進程的平均總記憶體使用量量(data+stack+text),單位是KB。 |
| %w |
進程主動進行環境切換的次數,例如等待I/O操作完成。 |
| %c |
進程被迫進行環境切換的次數(由於時間片到期)。 |