Time
在命令行中使用“時間”時,什麼是“系統時間”
我使用在 Ubuntu 14.04 的標準終端上
time
計時Perl
腳本。我讀過那
real time
是秒錶時間;作為使用者,我花在查看從啟動程序到終止程序執行的程序上的時間。但我不明白時間是user
什麼sys
。至少可以說,手冊頁time
含糊不清。雖然有點清楚
real
時間是分開的user
,sys
但不清楚它們代表什麼。在我的腳本中,我正在進行基準測試
$$ 1 $$C++ 和 Perl 相互對比以查看差異,我想知道我實際得到了什麼數據。一個範例輸出是:
real 0m24.198s user 0m23.120s sys 0m1.030s
有人可以詳細說明預設的時間格式告訴使用者什麼嗎?我是Linux新手,所以請不要假設太多。
$$ 1 $$有趣的是,雖然在我的基準測試中 C++ 在
real
時間方面比 Perl 快得多,但sys
時間並沒有太大差異,因為 C++ 實際上sys
比 Perl 使用更多的時間。這就是為什麼我想知道它們的意思
來自維基百科:
- 使用者時間與系統時間
術語“使用者 CPU 時間”起初可能有點誤導。需要明確的是,總 CPU 時間是 CPU 為程序執行某些操作所花費的時間和 CPU 代表程序為核心執行系統呼叫所花費的時間的組合。當程序循環遍歷數組時,它正在累積使用者 CPU 時間。相反,當程序執行諸如 exec 或 fork 之類的系統呼叫時,它正在累積系統 CPU 時間。
- 實時與 CPU 時間
在這種情況下,術語“實時”是指經過的“掛鐘”時間,例如使用秒錶。總 CPU 時間(使用者時間 + 系統時間)可能大於或小於該值。因為程序可能會花費一些時間等待並且根本不執行(無論是在使用者模式還是系統模式下),所以實際時間可能大於總 CPU 時間。因為程序可能會派生出 CPU 時間(使用者和 sys)被添加到 time 命令報告的值的子程序,所以總 CPU 時間可能大於實際時間。