2010-04-12 34 views
13

我在過去使用過幾個配置文件,從來沒有發現它們特別簡單。也許我選擇了不好的,也許我真的不知道我在期待什麼! 但是我想知道是否有任何簡單的入門和工作的「標準」輪廓儀?我不認爲我需要大量詳細的報告,才能找到主要的黑點。在這一點上,易用性對我來說更爲重要。什麼是一個非常簡單的C++分析器(VC++)?

這是我們正在使用的VC++ 2008(我個人運行標準版)。我不認爲IDE中有任何工具可以用於此目的,但是看不到主菜單中的任何工具?

+0

請參閱http://stackoverflow.com/questions/67554/whats-the-best-free-c-profiler-for-windows-if-there-are – SjB 2010-04-12 19:18:33

回答

10

VS內置:

如果你有團隊版,您可以使用Visual Studio profiler


其他選項:

Otherwise check this thread


創建自己的輕鬆:

我個人使用基於Win32 API QueryPerformanceCounter內部建一個。 您可以在一百行代碼或更少的代碼內使用一些不錯的和易於使用的東西。

該過程很簡單:在每個要配置的函數頂部創建一個名爲PROFILE_FUNC()的宏,該宏將添加到內部管理的統計信息中。然後有另一個名爲PROFILE_DUMP()的宏將輸出轉儲到文本文檔。

PROFILE_FUNC()創建一個對象,該對象將使用RAII記錄對象被銷燬之前的時間量。這個RAII對象的構造函數和析構函數都會調用QueryPerformanceCounter。您也可以在代碼中保留這些行,並通過#define PROFILING_ON

+0

嘗試昏昏欲睡,尚未完全確定它。 – 2010-04-12 19:55:33

+1

我討厭微軟是如何使用一款出色的工具(Visual Studio Professional),並且定價完美的探測器這樣的強大功能。因此,我不是從我那裏得到一個600美元的保證,而是使用mingw並使用試驗和錯誤。 – 2010-04-12 20:07:08

+0

@Chris:我從字面上*無法相信*你擁有的權利感。 MS爲$ 0提供了一個出色的優化編譯器和IDE,並且仍然有人抱怨。你意識到他們需要在免費版本中保留*一些理想的功能,這樣人們纔會購買Pro,對吧? – 2011-10-14 04:35:32

2

來控制行爲。我過去使用了lt prof來快速運行我的C++應用程序。它的工作非常簡單,並且可以通過編譯的程序運行,不需要和源代碼掛鉤或調整。我相信有一個試用版。

+0

++我只是遵循這個鏈接,它看起來很有希望。它顯然是通過堆棧採樣工作並提供行​​級解析。我不知道它是否允許在I/O或其他阻塞期間採樣,這將允許檢測不必要的I/O。 – 2010-04-12 21:57:05

+1

我剛試過LTProf。我喜歡的是它提供了行級別的百分比,並且它在I/O(Yay !!)中進行了抽樣。然後,我很傷心地發現無法手動開啓/關閉採樣,就像使用熱鍵一樣。因此,如果一個程序是交互式的,就沒有辦法說「立即採樣」,而不是等待用戶輸入。 – 2010-06-05 23:51:01

22

我提出一個非常簡單的方法(這是我從讀Mike Dunlavey「的帖子上了解到SO):

只是暫停程序。

做幾次得到一個合理的樣本。如果一個特定的函數佔用了程序執行時間的一半,那麼很可能你會很快趕上它。

如果您將該功能的性能提高了50%,那麼您將整體執行時間僅提高了25%。如果你發現它根本不需要(我已經在很短的時間內發現了幾個這樣的情況,我一直在使用這種方法),你只需將執行時間減半。

我必須承認,起初我很懷疑這種方法的功效,但經過幾個星期的嘗試後,我很迷惑。

+10

++是的,恐怕我已經制作了一個宣傳這種技術的皇室害蟲,但是它可以幫助它,它很有效。 (重要的是看看調用堆棧,有時候人們會說「這是在一些系統例程中 - 這是什麼好處?」當問題顯而易見時有幾個級別) – 2010-04-12 20:01:06

+0

我對此持懷疑態度。但是,我可以證實這確實有效。特別是,如果你的程序執行速度很慢。最重要的是,不需要代碼鉤子。 – 2016-03-23 21:53:06

3

我總是使用AMD CodeAnalyst,我覺得它很容易使用,並給出有趣的結果。我總是使用基於時間的配置文件,在該配置文件中,我發現它與我的應用程序的調試信息很好地協作,讓我可以找到在程序,C++指令和單個裝配指令級別花費的時間。

2

配置文件的一個非常簡單的(免費的)方法是安裝Windows調試器(cdb/windbg),在感興趣的地方設置一個bp,然後發出wt命令(「跟蹤和觀察數據」)。檢查出MSDN欲知更多信息。

+0

++我以前使用windbg,並依賴於Ctrl-C方法。如果我想讓它慢慢運行,我會使用Watch Data,如你所建議的。 – 2010-04-12 22:01:17

相關問題