2012-12-15 156 views
2

在C++軟件調查一類我有一個基於C++的程序運行起來,我的問題是,我想知道:在運行時

  • 什麼是TOP10,TOP5,topX被調用的方法最
  • 什麼是最重的班計算,或者需要什麼的線程的最大時鐘週期

有可能與像Linux下valgrindperf或類似的工具來做到這一點?

我不應該說這個應用程序使用了很多第三部分庫,但我對這些並不感興趣,因爲我想修改和改進的是應用程序本身的核心,所以我可以將所有可能的方法列表刪除到僅由「實際應用」實施的那些。

一般來說,如何檢測什麼是類或方法負責分支和性能損失最大的失敗?

+0

如果一個函數被調用,記住它使用變量,然後顯示控制檯中的每個函數變量,以查看哪個被稱爲最? –

+0

@ Need4Sleep不完全是一個「解決方案」,我也想調查可執行文件,我不想操縱這個應用程序的整個代碼庫,它很大,這是一個危險的事情,而且,這將是一個浪費的時間。 – user1849534

回答

2

您正在查找分析器,例如gprof

+0

我剛剛採取了快速外觀,但我想問這個問題,gprof只適用於應用程序編譯調試符號? (gcc下的'-g'標誌)在任何情況下都不起作用? – user1849534

1

您正在搜索的程序稱爲分析器。它給你一個調用方法的列表,以及你程序運行時間的百分比。如果你在Linux下,你可以使用像valgrind這樣的工具,在我個人使用Very Sleepy的Windows上。你也可以在Linux下看到這個線程來獲得一個profiler列表: thread

+0

也在MacOS/X下,包含的Activity Monitor實用程序內置了一個mini-profiler ....只需在進程列表中點擊您的(正在運行的)進程,然後單擊「Sample Process」按鈕,稍等幾下秒,並出現報告。 –

1

爲了計算一個函數或深度的機器週期的調用,你可以使用QUANTIFY工具。