2016년 4월 27일 수요일

600x480 dilating하는데 시간이 2배 차이가 나서 보니... 함수를 릴리즈로 컴파일해서 lib로 사용...

 디버그모드와 릴리즈모드의 속도차이 납니다.



심한경우 10배 까지 차이나는 경우도 있습니다.

( 800x600 이미지에서  블럭 매칭 수행했더니, 딱 10배 차이가 납디다~.)



이것은 컴파일러 특징일 수도 있습니다.



MS 컴파일러의 경우, Debug 모드로 빌드하면, 최적화를 할 수 없습니다. (최적화 플래그가 자동으로 꺼집니다.)

반면, Release 모드로 빌드하면, 최적화 옵션을 선택할 수 있습니다, minimum size / maximum speed.

또한, 디버그 모드시 DEBUG_NEW를 사용하면, 힙할당정보를 계속해서 추적합니다.

이것을 위한 오버해드가 포함 될 수도 있습니다.

이런 이유 때문에라도, Release 모드가 더 빠릅니다.



반면, gcc의 경우는, 디버그 옵션과 최적화 옵션이 따로따로 줄 수있습니다.

디버그 옵션을 추가한 상태에서, 최적화 옵션을 설정할 수 있습니다.





참고로, 릴리즈 모드에서도 디버깅을 할 수 있습니다.

릴리즈모드에서 디버깅 정보를 추가한 다음, 생성된 디버그 정보 파일, *.pdb 를 특정 위치에 넣고

WinDBG를 이용하면, 소스코드 레벨의 디버깅이 가능합니다.

댓글 없음: