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

      Linux下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並沒有變化。

發佈了14 篇原創文章 · 獲贊 8 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章