2017年6月26日 星期一

GNU time:計算程式執行時間

UNIX-like系統上(像是Linux或BSD或Mac),用來計算執行程式的時間的指令是time,或叫做GNU time。使用方法:
  • time command
這個指令會回傳三個時間,參考What do 'real', 'user' and 'sys' mean in the output of time(1)?的說明:
  • real:實際上從開始執行指令到結束指令花的時間,包含CPU處理的時間、系統做I/O的時間等。一般來說我們說跑多久指的就是這個時間
  • user:CPU花在跑這個程式的時間。"The amount of CPU time spent in user-mode code (outside the kernel)"
  • sys:因為跑這支程式系統核心使用的CPU時間。"The amount of CPU time spent in the kernel within the process."
所以說 User+Sys 就是整個程式在CPU裡面跑的時間。由於現在多核心的出現,所以有時候會出現CPU跑的時間比整個程式執行的時間還長的情況。

以下幾個簡單的例子:
  1. time echo "scale=999;4*a(1)" | bc -l > /dev/null
    real 0m0.317s
    user 0m0.312s
    這是一個CPU時間約等同實際經過時間的例子
    sys 0m0.000s
  2. time timeout 5 yes > /dev/null
    real 0m5.002s
    user 0m4.988s
    這是一個CPU時間約等同實際經過時間的例子
    sys 0m0.000s
  3. time timeout 10 cat /dev/zero | pigz -p 8 > /dev/null
    real 0m10.003s
    user 1m27.341s
    這是一個CPU時間比實際經過時間還多的例子
    sys 0m10.337s
以上3個例子參考了《timeout:指定指令執行的時間》《一行指令做CPU壓力測試》《CPU壓力測試》等文章
_EOF_

沒有留言:

張貼留言