計(jì)算程序運(yùn)行時(shí)間——time命令詳解

命令使用

time命令用于計(jì)算程序運(yùn)行的耗時(shí),使用方法就是在命令前加上time即可。

time tar -zxvf xxx.tar.gz

要注意的是time命令不會(huì)屏蔽后面真實(shí)命令的輸出,他會(huì)在命令輸出結(jié)束后加上命令的時(shí)間信息,如下圖:


time命令
詳細(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)行的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容