2009-11-21 125 views
1

我想知道一部分代碼使用的CPU時間(我知道linux中的time命令,但是這會給我整個程序的運行時間,不是它的一部分。) 有沒有任何功能/命令可以幫助我實現這一點。部分代碼的CPU運行時間

感謝

+3

哪種語言? – 2009-11-21 17:56:12

+0

謝謝大家的回覆。 clock()看起來不錯。 (對不起,不具體,我使用gcc 4.1.3) – 2009-11-21 18:33:20

回答

4

在標準C庫clock()函數給出使用進程啓動後使用,這樣你就可以「之前」比較和值「後」來獲得時間的CPU時間量:

#include <time.h> 
#include <stdio.h> 

... 

clock_t t0, t1; 

t0 = clock(); 
// do computation 
t1 = clock(); 

printf("Computation took %dms\n", (int)((t1-t0) * 1000/CLOCKS_PER_SEC)); 

其他語言將具有類似的功能以及用於更高級時序信息的分析器;發佈更多的細節,如果你有一個特定的目標。

0

當我在linux上開發軟件時,我使用Callgrind and KCachegrind來剖析我的代碼。它可以顯示單個方法花費多少時間完成程序的總執行時間等等。

另一種選擇是通過用gettimeofday()等一些定時功能封裝相關代碼來自行檢查。

+0

gettimeofday()給出了掛鐘時間,而我需要CPU時間。 我會嘗試你建議的剖析軟件 謝謝。 – 2009-11-21 18:39:16

+0

是的,你說得對。正如我所說的,我在Linux上有點生疏:)我仍然建議使用Callgrind作爲開發過程的一部分。 – 2009-11-22 18:44:55

0

在Haskell,你可以實現的getCPUtime單子拿到代碼的main部分功能之間的時間差。