Profiler란 - 퍼옴(MadChick) -
비주얼스튜디오에서 제공하는 Application의 performance tuning을 위한 툴중 하나입니다.가령 프로그램을
이때 시간을 가장 많이 잡아먹는 함수, 또는 비효율적인 코드부분등을 찝어낼수 있도록 도와주는 놈이 Profiler라는 놈입니다.
Profiling은 Function Profiling, Line Profiling 두가지가 있습니다.
Line Profiling은 담에 하기로하고, 먼저 Function Profiling 사용법을 알아보겠습니다.
- 메뉴의 Project/Setting...을 열어 Link tab에 Enable Profiling이라는 체크박스를 체크합니다.
- 프로젝트를 다시 빌드합니다.
- Build 메뉴의 맨끝에 있는 Profile...을 선택합니다.
- 다이얼로그에 보면 Profile Type이 몇가지 나옵니다.
이중에 Function timing을 선택하고 OK를 누르면 실행됩니다.
(이때, 실행파일이 있는 폴더에 *.map파일이 반드시 있어야 합니다.) - 종료후에 Output창 맨끝 tab에 있는 Profile탭을 열면 결과를 볼수 있습니다.
다음은 dll의 profiling방법입니다.
- 위 단계의 3번까지는 dll도 똑같습니다.
(dll과 exe모두 Enable Profiling상태로 빌드하고, exe가 ActiveProject가 되어있어야 합니다.)
- 일단 아래와 같은 내용의 profdll.bat파일을 만듭니다.
copy %1.dll save prep /OM %1.dll copy %1._ll %1.dll profile /I %1 /O %1 %2 copy save %1.dll prep /M %1 plist %1
- command line에서 실행할 경우는 아래와 같이 실행시킵니다. (파일이름은 확장자없이)
profdll dllfile exefile
- 비주얼스튜디오내에서 실행할 경우에는
Build/Profile...의 대화상자에서 Profile type중 custom을 선택합니다.
그리고나서, Custom Settings에서 3번과 같이 써주면 되구요.
아래는 profile 결과물 샘플입니다.
Func Func+Child Hit
Time % Time % Count Function
-------------------------------------------------------
4832.446 57.5 4832.446 57.5 104418 CString::operator+=(char) (mfc42d.dll)
559.958 6.7 559.958 6.7 524 CDC::DrawTextA(class CString const &,struct tagRECT *,unsigned int) (mfc42d.dll)
184.740 2.2 196.883 2.3 38 CYWndViewer::OnUpdatePagenext(class CCmdUI *) (ywndviewer.obj)
137.745 1.6 5059.470 60.2 1496 CYWndViewer::GetToken(unsigned char &,class CString &) (ywndviewer.obj)
88.514 1.1 88.514 1.1 3893 CString::~CString(void) (mfc42d.dll)
댓글
댓글 쓰기