命令使用
time命令用于計(jì)算程序運(yùn)行的耗時(shí),使用方法就是在命令前加上time即可。
time tar -zxvf xxx.tar.gz
要注意的是time命令不會(huì)屏蔽后面真實(shí)命令的輸出,他會(huì)在命令輸出結(jié)束后加上命令的時(shí)間信息,如下圖:

詳細(xì)釋義
-
real
real表示從執(zhí)行命令開始,到命令執(zhí)行結(jié)束,時(shí)鐘一共走過了多少時(shí)間,相當(dāng)于進(jìn)程開始時(shí)記錄一下時(shí)間,結(jié)束后再記錄一下時(shí)間,然后計(jì)算時(shí)間差,我們一般主要就看這個(gè)時(shí)間,因?yàn)檫@是程序客觀上的執(zhí)行時(shí)間。
-
user
user表示進(jìn)程在用戶態(tài)的cpu時(shí)間,這里解釋一下用戶態(tài)與內(nèi)核態(tài):
內(nèi)核態(tài)(Kernel Mode)
在內(nèi)核態(tài),代碼擁有完全的,不受任何限制的訪問底層硬件的能力。可以執(zhí)行任意的CPU指令,訪問任意的內(nèi)存地址。內(nèi)核態(tài)通常情況下,都是為那些最底層的,由操作系統(tǒng)提供的,可信可靠的代碼來運(yùn)行的。內(nèi)核態(tài)的代碼崩潰將是災(zāi)難性的,它會(huì)影響到整個(gè)系統(tǒng)。
用戶態(tài)(User Mode)
在用戶態(tài),代碼不具備直接訪問硬件或者訪問內(nèi)存的能力,而必須借助操作系統(tǒng)提供的可靠的,底層的API來訪問硬件或者內(nèi)存。由于這種隔離帶來的保護(hù)作用,用戶態(tài)的代碼崩潰,系統(tǒng)是可以恢復(fù)的。我們大多數(shù)的代碼都是運(yùn)行在用戶態(tài)的。
而cpu時(shí)間是cpu的工作時(shí)間。
-
sys
表示cpu在內(nèi)核態(tài)的工作時(shí)間。
注意
real 不等于 user + sys
上面的圖可以看出real時(shí)間為0.004,而user和sys相加等于0.005,實(shí)際上real與后面兩個(gè)值是不可以對(duì)比的,他們代表的東西完全不同,cpu在內(nèi)核態(tài)與用戶態(tài)的工作時(shí)間不代表客觀的時(shí)鐘時(shí)間。
尤其是在多核心執(zhí)行的情況下,比如四個(gè)CPU核心同時(shí)執(zhí)行一個(gè)程序,每個(gè)CPU耗時(shí)1秒,四個(gè)共計(jì)耗時(shí)4秒,但客觀的時(shí)鐘時(shí)間只有1秒,因?yàn)樗膫€(gè)CPU是同時(shí)運(yùn)行的。