time 輸出的程式執行時間
阿新 • • 發佈:2018-12-09
time 輸出的程式執行時間
-
real
real 時間指的是從程序開始建立執行到執行完成整個的系統時間。這個時間可能包括其它程序執行的時間,以及程序掛起的時間。
-
user
在使用者態中執行程式碼花費的 cpu 時間。
-
sys
在核心態中執行的程式碼花費的 cpu 時間。
user + sys 就是你的程序使用的 cpu 總時間,這個時間是在所有的cpu上的執行時間的總和。當一個程序有多個執行緒時且存在多個cpu核心時,user 與 sys 時間的和可能會超過 real。
注意這裡統計的時間是在所有 cpu 上的執行時間,並行執行時不是隻計算單次,而是全部都要計算,因此就可能會有上述情況的存在。
當你在優化程式時,在執行多次系統呼叫時將會帶來額外的開銷。拿 write 系統呼叫來講,當你每次 write 所使用的緩衝區很小時,寫相同位元組長度,那麼從使用者空間複製引數到核心空間會頻繁進行,切換 cpu 模式也會相當頻繁。當你每次 write 使用的緩衝區較大時,一次可以寫更多的位元組,切換頻率就會降低,引數複製頻率也會降低,就能夠提高效能,但並不是越多越好!
下面這張圖選自 《APUE》,能夠很好的說明問題!可以看出,當緩衝區長度大於 4096 時就沒有可觀的效能提升了。更詳細的內容詳見 《APUE》section 3.8!