국내 최초공개: 소스코드리뷰(XVI) 코드프로파일러의 활용

[목차(도우미)]
코드프로파일러의 활용

코드프로파일러(vbcp.dll)라는 것

Visual Basic에는 코드프로파일러(Code Profiler)라는 기능이 들어 있다.(VBCP.DLL)이란 이름으로 존재하고 "regsvr32 vbcp.dll"로 등록을 하면 통합개발환경(IDE)에서 불러 쓸 수 있다.

이것은 소스코드 한줄 한줄 단위로 실행에 걸린 시간과 처리 횟수를 기록해서 해석하는 데 도움이 되는 프로그램이다. 최근 소스코드리뷰에서 실행 시간을 측정한 것도 vbcp.dll 덕분이다.

검색 엔진을 통해서 검색해 보아도 이 기능은 그다지 많이 알려져 있는 기능이 아니다. 이 블로그를 올려 놓고 며칠간 유사한 자료가 있는지 검색해 보았으나 국내 검색 엔진과 구글엔진을 써서 한글 자료를 뒤져보았으나 단 한건도 검색결과가 없었다. 그래서 과감히 "국내 최초 공개"라고 할 수 있다. 비주얼 스튜디오(Visual Studio) CD에도 unsupport라는 폴더에 들어 있고 CD에서 직접 복사를 해야만 가능하다. 그러나 레지스트리에 등록해서 실행해 보면 깜짝 놀랄 기능이 감추인 기능으로 들어있다는 점에 놀라게 된다.

특히 실행 시간이 많이 걸려서 개선을 하고자 할 경우에 일일이 손으로 GetTickCount 등의 함수를 집어넣지 말고 이런 툴을 이용해서 정밀한 조사를 하는 것도 좋은 기술이 된다. 기왕에 코드프로파일러의 한글 정보가 인터넷상에 없으므로 화면을 넣어서 설명하기로 하겠다. 화면에 관한 간단한 설명은 일본 잡지 사이트에 설명하고 있는 문헌이 있었는데, 그것을 참조하면 된다. (굳이 기존 문헌이 있는데, 중복 작성은 생략한다.)


이미지 출처/참고 주소: http://pcdn.int21.co.jp/pcdn/vb/noriolib/vbmag/9710/vb10_vdt.html#C11

간단한 사용법

사용법에 관하여는 VBCP.DLL과 같이 배포되는 ReadMe.txt를 읽어보면 알수 있다.

파일명 : VBADDIN.INI
VBCP.VBCPClass=0 를 기입

Visual Basic을 기동
애드인 -> 애드인 매니저 -> VB Code Profile를 선택
애드인 -> VB Code Profile 을 클릭

상용으로 판매되는 툴도 존재하는 것 같은데 차차 발견되는 대로 댓글에 메모해 두기로 한다.

무궁화

(무궁화: 아직은 작아서 잘 안보이지만 이 꽃은 무궁화다. 매년 무궁화가 자라는 것을 눈여겨 보지 않았지만 올해는 꽃망울 부터 자세히 관찰하여 무궁화 꽃의 아름다움을 단계별로 즐겨보려고 한다. 소스코드 한줄 한줄 보는 것보다는 재미있고 아름다울 것이다.)

고급 사용법

ReadMe.txt만으로는 알수 없고 실제로 사용하다보면 약간의 에러 메시지가 발생한다. 그럼에도 불구하고 미지원 기능이라는 이유로 도움말이 존재하지 않기 때문에 시행착오에 의한 약간의 노하우가 필요하다.

신규 프로젝트에서는 잘되는데, 기존의 프로젝트에서는 실행에러가 나는 문제

이는 대개 프로젝트 내의 모듈들이

  • Project.vbp와 같은 폴더안에 존재하지 않고 복수개의 폴더에 분산되어 배치되어 있을 때
  • 일부 모듈이 읽기전용이면
  • error 62 has occurred in loadprojdata input past end of file 등의 에러는 .vbp 파일 내용에 한글이 포함되어있는 경우

실행에러가 발생한다.

(.vbp 파일 내용에 한글이 포함되어있는 경우 에러가 생긴다는 것은 댓글을 통해 피드백해 주신 것을 반영한 것입니다. 피드백 해주신 분께 감사합니다. 피드백에 대한 자세한 내용은 댓글을 참조하세요.)

실행에러의 대책

모든 모듈에 대해서 실행 속도를 측정하는 것이 아니라면 측정하고자 하는 모듈에만 선택적으로 프로파일코드를 부여하면 된다.
그러기 위해서는

더미로 신규 프로젝트파일(debug.vbp)를 작성하여 대상 모듈만을 debug.vbp에 추가한다.

debug.vbp는 컴파일이 되지도 않을 뿐더러 컴파일을 실행할 필요도 없다. 단지 코드프로파일러의 측정 코드를 추가하기 위해서 더미를 만든다.

그후 원본 프로젝트 파일(Project.vbp)를 텍스트 편집기로 열어서

dao350.dll, 프로파일용 표준 모듈(*.bas) 등을 참조 추가한다.

이제 원본 프로젝트가 컴파일 가능하다!(오래 기다리셨습니다.)

결과 파일을 알고 싶을 때

프로파일 코드가 생성된 직후에 *.vdb 이름의 파일이 생겨나는데 이것은 *.mdb와 같은 데이터 베이스 파일이다. 액세스를 이용해서 열면 내용을 확인할 수 있다. 코드프로파일러 File|View Result 메뉴에서도 열수 있다.

다 제대로 했는데도 코드 프로파일러 기능이 무효가 되었다는 메시지

코드프로파일러는 소스코드에 프로파일 코드를 추가하면서 파일 사이즈를 데이터베이스에 기록해 놓고 실행시 체크하게 되어 있다. 그러므로 프로파일 코드를 추가한후 소스코드를 수정하면 곤란하다. 처음부터 다시 프로파일 코드를 해제/추가하는 방법이 가장 간편하다. 또는 *.vdb파일을 열어서 파일사이즈가 바뀐 모듈의 정확한 파일사이즈로 수정해주면 무난하게 실행된다.

관련된 내 블로그:
[연구와 개발] - 소스코드리뷰(XIII) IF조건문의 실행 속도를 측정해보다
[연구와 개발] - 소스코드리뷰(XIV) 문자열 해석의 고속처리
[연구와 개발] - 소스코드리뷰(XV) 문자열 연산(&)의 속도

by 금메달.아빠 on 2010. 6. 25. 07:38