2010年4月17日 星期六

[C++]Visual Studio 2008 Service Pack 1 Stand-Alone Profiler 安裝與試用

data mining 真正的挑戰是在海量的資料!

論文程式遇到效率的瓶頸,資料量一多,程式就會執行的非常慢

老師希望至少能執行完十萬筆的結果...

我想固然問題本身複雜度不低,但我想絕大多數的瓶頸應該是我poor programming skill造成

感謝拉拉學姐推薦Profiler,又長知識了,Profiler是一種程式設計來幫助工程師分析code的瓶頸

各種不同平台(win/linux)上都有提供,win平台上的似乎大部分都要收費

明查暗訪後發現,只有少數版本的Visual Studio 2008內建有GUI Profiler的功能
(Team System Development Edition, Team Suite)
學校用的想當然爾是Professional ed.

不過想在VS 2008 Prof.中使用Profiler功能似乎也是可行的,微軟有提供一套Visual Studio 2008 Service Pack 1 Stand-Alone Profiler

是在command line下執行的 stand-alone version (沒魚蝦也好,就將就著用吧XD)

下載檔案分成32位元與62位元的版本,安裝完成後,必須設定環境變數Path

以我為例是打開cmd:
set path=%path%;C:\Program Files\Microsoft Visual Studio  9.0\Team Tools\Performance Tools

如此一來,OS才能認得vsinstr.exe的指令

在VS的專案的屬性中,Enable Profile(專案→屬性→連結器→進階→設定檔→啟用分析資訊/Profile in both debug and release mode)

另外要設定 symbol server(這不設定的話,報表產生過程會有error,但不是很清楚這個的用意)
_NT_SYMBOL_PATH  
symsrv*symsrv.dll*c:\localcache*http://msdl.microsoft.com/download/symbols

接下來就可以開始使用Profiler,以Instrumentation為例:

1. 以系統管理員身份打開cmd,切換到目標執行檔的資料夾
2. 執行 vsinstr.exe MyProgram.exe,會備份程式執行檔到附檔名 .orig (why?)
3. vsperfcmd /start:trace /output:MyProgram.vsp,啟動Profiler
4.接下來執行自己要測的程式,程式執行完畢就把Profiler關掉,vsperfcmd /shutdown 
5. 產生報表 vsperfreport MyProgram.vsp /output:c:\temp /summary:all

以上,就可以看到一些報表...至於報表還要再研究一下,有空再來篇續集吧 :)

另外,Profiler分成 Sampling(取樣法)與Instrumentation(檢測法),等我搞懂在補上

參考資料:
Using the Visual Studio 2008 Profiler
使用 Visual Studio Profiler 找出應用程式的瓶頸
Got Visual Studio 2008 Professional, Want Profiling?
How to: Install the Stand-Alone Profiler
Walkthrough: Command-Line Profiling Using Instrumentation

沒有留言: