Time
為什麼實時可以低於使用者時間
我有一個轉換影片文件的腳本,我在伺服器上執行它的測試數據並測量它的時間
time
。結果我看到:real 2m48.326s user 6m57.498s sys 0m3.120s
為什麼實時比使用者時間低這麼多?這與多執行緒有什麼關係嗎?或者還有什麼?
**編輯:**我認為該腳本執行了大約 2 分 48 秒
您顯示的輸出有點奇怪,因為實時通常比其他兩個大。
Real
時間是掛鐘時間。(我們可以用秒錶測量什麼)User
time 是程序中在使用者模式下花費的時間Sys
是程序內在核心中花費的 CPU 時間。所以我想如果工作是由幾個處理器同時完成的,CPU 時間會高於掛鐘時間。
這是並發/多執行緒/並行類型的應用程序嗎?
舉個例子,這是我發出
time find .
命令時在我的 Linux 系統上得到的。正如預期的那樣,real
在這個單使用者/單核程序上,經過的時間比其他時間長得多。real 0m5.231s user 0m0.072s sys 0m0.088s
經驗法則是:
- real < user:該程序受 CPU 限制,並利用多個核心/CPU 上的並行執行。
- real ≈ user:程序受 CPU 限制,不利用並行執行。
- real > user:程序是 I/O 綁定的。在多個核心上執行幾乎沒有優勢。