2012-03-03 118 views
2

我需要分析一個用C編寫的軟件。現在的問題是,雖然gprof或我自己的開始計時器/結束計時器函數調用會爲我提供每個函數花費的時間,但我不知道哪一個是最耗時的部分在每個功能中。有些人可能認爲它是微型優化,但這就是這個小時的需求!如何剖析代碼段?

實現此目的之一是「手動」放置循環中的開始/結束計時器調用(可能會有多個循環)。在這種情況下,更聰明的做法是允許使用宏來啓用/禁用這些調用。

但我想自動化此儀器?

你能告訴我是否有一個好工具可以實現嗎?如果我可以從腳本中反覆調用已插裝的程序,然後找到在代碼的每個「部分」中花費的時間的平均值,那將是理想的。目前這個部分是一個鬆散定義的術語,但是「工具」可以對部分的內容有更具體的定義。

這也將是有益的,如果我能以某種方式瞭解哪些工具是

+0

我還去了佐治亞理工學院。請告訴你的教授*退出銷售gprof; - )* – 2012-03-03 14:02:58

回答

0

我自己並沒有使用它,但我聽說Valgrind儀器框架(http://www.valgrind.org/)具有使您可以完成所需的細粒度分析的工具。

0

您希望代碼儘可能快地運行,對吧?

gprof是一種測量工具。它可以幫助評估替代實現,如the original authors wrote。 他們沒有說它是有效的定位代碼需要一個替代實現,並不是,即使幾乎所有人都認爲它是。

謬誤是測量定位,但如果你想在房間裏找到一頭大象,你需要測量它以知道它在那裏嗎?不,你睜開你的眼睛。

Here's a way to open your eyes to what your program is doing.