Linux使用time命令獲取命令執行時間

perfychi發表於2014-02-26

From:

下time命令可以獲取到一個程式的執行時間,包括程式的實際執行時間(real time),以及程式執行在使用者態的時間(user time)和核心態的時間(sys time)。

  它的使用方法和前面講過的strace類似,在待執行的命令前加上time即可。

  來看一個例子程式test.c

  #include

  int main()

  {

  FILE *fp = fopen("/tmp/testfile","w");

  int i=0;

  for(i=0;i<3;++i)

  {

  fprintf(fp,"%d\n",i);

  }

  fclose(fp);

  return 0;

  }

  編譯後用time命令來統計它的執行時間:

  [leconte@localhost test]$ time ./test

  real 0m0.020s

  user 0m0.000s

  sys 0m0.018s

  結果表明,程式實際執行時間0.020s,使用者態執行時間接近0s,核心態執行時間0.018s。這是因為我們主要操作是使用檔案相關的系統呼叫,程式大部分時間工作在核心態。

  需要注意的是,real並不等於user+sys的總和real代表的是程式從開始到結束的全部時間即使程式不佔CPU也統計時間。而user+sys是程式佔用CPU的總時間,因此real總是大於或者等於user+sys的。

  例如我在上述程式中加上sleep(1):

  for(i=0;i<3;++i)

  {

  sleep(1);

  fprintf(fp,"%d\n",i);

  }

  用time統計結果如下:

  [leconte@localhost test]$ time ./test

  real 0m3.025s

  user 0m0.000s

  sys 0m0.019s

  由於執行了三次 sleep(1),real的時間比剛才多了3s,這3s內程式並沒有佔用CPU,因此user+sys並沒有變化

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-1093678/,如需轉載,請註明出處,否則將追究法律責任。

相關文章