2015-08-28 22 views
2

我在ubuntu上使用GCC,我想要一個函數來測量我的函數使用CPU的時間。我不想包括CPU花在後臺進程上的時間。我如何測量我的功能的時間,只有我的功能是使用CPU

例如,如果我的函數使用CPU 10 ms,則處理器處理一些其他數據20 ms,然後繼續處理我的函數8 ms。我希望它返回18ms,而不是38次。我不介意結果是否在CPU ticks中。

+0

有沒有「我的功能」指的是整個程序(在這種情況下,只要使用時間程序),或者你真的只想要計算特定子程序的CPU使用率? – MTilsted

+0

這就是所謂的「CPU時間」,而不是「掛鐘時間」 – MSalters

回答

-2

你想看看clock()man 3 clock)。

+0

請從downvoters的任何評論? –

+0

不是其中之一,但可能是因爲'clock()'在多線程多核場景中並不適合這一點,因爲cputime將從所有執行器累積起來,使其進度比waltime更快。 –

1

除了Baris Demiray的回答之外,我可以親自推薦valgrind工具集的callgrind工具(以及任何其他工具)。這在與kcachegrind/qcachegrind結合時特別有用,它應該通過ubuntu存儲庫可用。這兩個工具,gprof的和callgrind的

一個非常簡短的描述可以在這裏找到: http://kcachegrind.sourceforge.net/html/Introduction.html

相關問題