2014-04-16 5 views
-1

Visual Studio에서 응용 프로그램을 릴리스 모드로 시작하면 .exe로 시작하는 것보다 속도가 훨씬 느립니다. 어떻게 해결할 수 있습니까? 또한 디버깅 성능을 향상시킬 수있는 방법이 있습니까?Visual Studio에서 릴리스를 시작하면 응용 프로그램이 느려집니다.

나는 2012 년

+0

.exe로 시작한 다음 디버거를 연결하면 어떻게됩니까? 아직도 느린가요? – sharptooth

+0

예, 디버거를 연결하자 마자 속도가 느려집니다. –

+0

다음은 내 대답에 두 번째 또는 세 번째 이유 때문입니다. – sharptooth

답변

0

이 동작에 대한 세 가지 주요 이유가있을 수 있습니다 비주얼 스튜디오를 사용하고 있습니다.

이유 1은 디버거에서 프로그램을 실행할 때 Visual C++ 런타임이 아닌 Windows에서 자동으로 사용하는 special debug heap입니다. 릴리즈 빌드에도 사용되며 보통 힙보다 느립니다. 제거하려면 디버거 외부에서 프로그램을 시작한 다음 디버거를 연결해야합니다.

이유 2는 ::IsDebuggerPresent() 또는 그와 동등한 내용에 따라 다르게 동작하는 코드입니다. 그렇다면이 코드를 처리하거나이 코드를 일시적으로 사용 중지해야합니다.

이유 3은 디버거가 연결되어있을 때 OutputDebugString()이 훨씬 느려진다는 것입니다. 디버그 추적 기능이 많은 경우 문제가 발생합니다. 그 이유가 있다면 그걸 처리하거나 디버그 출력을하는 코드를 일시적으로 비활성화해야합니다.

또한 this question에 대한 답변을 참조하십시오.

+0

이제 디버그 힙이 비활성화되었습니다. 디버그 모드로 실행하는 것이 더 빠르지 만 릴리스 모드는 동일하게 유지됩니다. –

+0

성능 분석을 시작할 때 퍼포 런스도 괜찮습니다. 그래서 분석을 실행할 때 특수 힙이 비활성화되지만 릴리스 모드에서는 '_NO_DEBUG_HEAP = 1'이 아닌 것으로 가정합니다. 왜? –

+0

@LiessJemai : 어떻게 디버그 힙을 비활성화 했습니까? – sharptooth

관련 문제