linux使用time命令擷取命令執行時間
Linux下time命令可以擷取到一個程式的執行時間,包括程式的實際已耗用時間(real time),以及程式運行在使用者態的時間(user time)和核心態的時間(sys time)。 它的使用方法和前面講過的strace類似,在待執行的命令前加上time即可。 來看一個例子程式test.c #incl
Linux下time命令可以擷取到一個程式的執行時間,包括程式的實際已耗用時間(real time),以及程式運行在使用者態的時間(user time)和核心態的時間(sys time)。
它的使用方法和前面講過的strace類似,在待執行的命令前加上time即可。
來看一個例子程式test.c
#include <stdio.h>
int main()
{
FILE *fp = fopen("/tmp/testfile","w");
int i=0;
for(i=0;i<3;++i)
{
fprintf(fp,"%dn",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,"%dn",i);
}
用time統計結果如下:
[leconte@localhost test]$ time ./test
real 0m3.025s
user 0m0.000s
sys 0m0.019s
由於執行了三次 sleep(1),real的時間比剛才多了3s,這3s內程式並沒有佔用CPU,因此user+sys並沒有變化。