2012-08-27 62 views
1

我想計算我的代碼的運行時間。我使用下面的代碼。當我使用system()來調用函數時,運行時間是多少?

Gettime(start time) 
loop 
{ 
    function 1 
    function 2 
    system(compiled excuetable file1) 
    function 4 
    system(compiled excuetable file2) 
    Gettine(time2) 
} 

然後我打印出time2-starttime以獲得每一步的時間成本。我使用不同的時間函數(clock,gettimeofday,getusage)來衡量它們。

有一個問題:我知道系統調用函數(編譯的可執行文件1和編譯的可執行文件2)花費在主循環中的所有其他功能。因爲裏面有它自己的gettime函數,它顯示它的成本超過1秒,而總時間(time2-starttime)只給我0.5秒。

那麼這是否意味着(time2-starttime)我現在不包括system()的時間花費?

+0

如果您在Linux上,您可以使用time命令。 – squiguy

+0

可能相當昂貴,因爲它創建了一個過程。除非你確切知道你在做什麼,否則你也應該避免使用系統。 – Wug

回答

0

我遇到了同樣的問題,我通過gettimeofday解決了。 例如:

#include <sys/time.h> 
int main(){ 
     struct timeval tvs,tve; 
     gettimeofday(&tvs,NULL); 
     //system("./test"); 
     gettimeofday(&tve,NULL); 
     double span = tve.tv_sec-tvs.tv_sec + (tve.tv_usec-tvs.tv_usec)/1000000.0; 
     printf("time: %.12f\n",span); 
     return 0; 
} 
相關問題