HowTo: Visual C++ 성능 문제 해결 방법
본 문서의 정보는 다음의 제품에 적용됩니다.
- Microsoft Visual C++, 32-bit Editions 5.0, 6.0
중요: 본 문서는 레지스트리 편집에 대한 정보를 수록하고 있습니다. 레지스트리를 편집하기 전에 문제가 발생할 경우를 대비해 레지스트리를 복원하는 방법을 알고 있어야 합니다. 레지스트리를 편집하는 방법에 대한 내용은 Regedit.exe의 "레지스트리 복원" 도움말 항목이나 Regedt32.exe의 "레지스트리 키 복원" 도움말 항목을 참고하십시오.
요약
본 문서는 다양한 상황에서 Visual C++ 성능을 향상할 수 있는 단계들을 문서화합니다. 다음의 모든 상황은 Visual C++ 6.0 과 일부는 Visual C++ 5.0 에도 적용됩니다.추가 정보
경고: 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 레지스트리 편집기를 잘못 사용하여 발생하는 문제에 대해 그 해결을 보증하지 않습니다. 레지스트리 편집기의 사용에 따른 모든 책임은 사용자에게 있습니다.레지스트리 편집 방법에 대한 자세한 내용은 레지스트리 편집기(Regedit.exe)의 "키 및 값 변경" 도움말 항목 또는 Regedt32.exe의 "레지스트리의 정보 추가 및 삭제" 및 "레지스트리 데이터 편집" 도움말 항목을 참조하십시오. 레지스트리를 편집하기 전에 레지스트리 파일을 백업해야 합니다. 또한 Windows NT나 Windows 2000을 실행하는 경우 ERD(응급 복구 디스크)를 업데이트해야 합니다.
Visual C++ 성능향상을 위한 제안
- 모든 workspace 는 관련 .ncb and .opt 확장자를 가진 파일들을 가지고 있습니다. 이들 파일들은 충돌할 수 있습니다. 이 파일들을 만들기 위해서는 처음에 workspace를 닫아야 합니다. 그리고 나서 위의 두 파일을 삭제하거나 이름을 변경하기 위해서 workspace 디렉터리로 갑니다. Workspace를 다시 열면 이 파일들은 다시 만들어 질 것입니다. 여러분은 그 파일들이 만들어 질 때 지연 현상을 겪게 될 것입니다.
주의: .ncb 파일은 ClassView, IntelliSense 그리고 WizardBar에 대한 정보를 가지고 있습니다. .opt 파일은 workspace 설정 파일입니다. .opt 파일을 지우는 것은 당시 Window Position, Breakpoints, 기타 Minor Settings의 손실을 초래할 것입니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.- Q173164 PRB: Loading a Workspace Is Slow in Visual C++
- Visual C++ 6 에만 해당: IntelliSence 은 Visual C++ 를 느려지게 할 수 있습니다. 이것을 점검하고 해결하기 위해서는 도구 메뉴에서 옵션을 선택함으로써 IntelliSense을 사용 불가능하게 만드는 것입니다. 편집 탭에서 "Statement completion options" 그룹에 있는 모든 체크 박스를 해제합니다. 더 자세한 정보는 Microsoft 기술 자료에 있는 다음의 문서를 참조하십시오.
- Q153284 INFO: Limitations of IntelliSense in Visual C++ 6.0
- Visual C++ integrated development environment (IDE)와 통합된 Microsoft Visual SourceSafe와 같은 소스 코드 제어 소프트웨어는 Visual C++ 가 시작하는 동안에 source code server에 연결하도록 설정될 수 있습니다. 그러한 경우에 네트워크 연결의 손실은 Visual C++ 이 매우 느리게 시작하는 원인이 될 수 있습니다. 성능을 향상 시키려면 적절한 네트워크 연결 또는 Visual C++ IDE에서 소스 코드 제어 소프트웨어 통합을 사용 불가능하도록 하는 것입니다. 후자를 선택하시려면 Visual C++을 종료하고 나서 다음의 레지스트리 키를 입력하기 위해서 RegEdit.Exe을 사용하고 Disabled 값을 (DWORD) 0x00000001 로 설정하는 것입니다: HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Source Control\Disabled주의: 레지스트리 키들을 수정하기 이전에 Visual C++를 종료하였는지 확인하시기 바랍니다. 그렇지 않으면 변경된 값은 적용되지 않을 것입니다.
- 소스 코드 제어 소프트웨어는 소스 코드 제어 하에서 Visual C++ 프로젝트들에 대한 Background Status 업데이트들을 수행할 수 있습니다. 이러한 특성이 사용 가능하다면 이들 업데이트들은 IDE에서 응답을 느려지도록 할 수 있습니다. 이들 background update들을 사용하지 못하도록 하려면 도구 메뉴에서 옵션을 선택합니다. 그리고 나서 Source Control 탭을 클릭하고 Perform Background Status Updates 체크박스를 해제합니다. 더 자세한 정보는 Microsoft 기술 자료에 있는 다음의 문서를 참조하십시오.
- Q195375 FIX: ClassView Can Be Very Slow When SourceSafe Is Being Used
- 64개의 네트워크 디렉터리보다 적은 곳으로 여러분의 파일을 옮기시기 바랍니다. 이것은 Visual C++가 사용하는 방법이므로 64번째와 위의 디렉터리들을 매 5분마다 검색하는 file change notifications를 얻는데 도움을 줍니다.
더 자세한 정보는 Microsoft 기술 자료에 있는 다음의 문서를 참조하십시오.- Q216098 PRB: Visual C++ IDE Slows When Files Are in Many Directories
- Source editor 와 Resource editor 를 사용할 때 WizardBar는 성능문제를 일으킬 수 있습니다. WizardBar를 사용 불가능하게 하는 것과 Visual C++를 재시작 하는 것은 성능을 향상시킬 수 있습니다. 더 자세한 정보는 Microsoft 기술 자료에 있는 다음의 문서를 참조하십시오.
- Q202591 BUG: Developer Studio Source and Dialog Editors Respond Slowly
- Q170511 PRB: WizardBar Notification Slows Down Dialog Editor
- 많은 수의 자원을 resource-only DLL 으로 나누는 것은 IDE 의 성능을 향상시킬 수 있습니다. 여러분은 AppWizard에 의해서 만들어진 MFC 응용 프로그램에 약 100여 개의 다이얼로그를 추가함으로써 이것을 확인하실 수 있습니다. ClassWizard를 사용하여 그 다이얼로그들 내에 있는 어떠한 컨트롤이라도 코드와 associate 하는 것은 그 다이얼로그에 대한 성능 문제을 초래할 것입니다.
프로젝트를 시작하기 이전에 Resource-only DLL 내부에서 번역된 리소스(localized resources)를 보관하도록 여러분의 프로젝트를 설계하는 것을 고려하여야 합니다. 자세한 정보를 보시려면 MSDN Online Libraries(http://msdn.microsoft.com/resources/libraries.asp) 내에 있는 다음의 MFC 기술 노트를 참고하십시오. 자원을 그룹화하는 것과 그들을 하나의 파일에 두는 것 보다 각각 리소스 파일들(.rc)에 위치시키는 것을 고려해야 할 수도 있습니다. 보다 자세한 정보를 보시려면 MSDN Online Libraries 내에 있는 다음의 MFC 기술 노트를 참고하시기 바랍니다 - Visual C++ 6 에만 해당: 디버그 세션 동안에 소스 코드 편집은 느릴 수도 있습니다. 편집을 불가능하게 하고 Continue 옵션은 성능을 향상시킬 수도 있습니다. 그렇게 하기 위해서는 도구 메뉴에서 Options 을 선택합니다. Debug 탭에서 Debug Commands Invoke Edit 와 Continue 체크 박스를 선택하지 않습니다. Edit and Continue 컴파일러 스위치 /ZI 를 사용하는 것을 피해야 하는 것 대신에 /Zi 를 사용할 수도 있습니다.
- IDE내에서 실행되는 모든 add-ins 과 매크로에 대해서 잘 알고 있어야 합니다. 왜냐하면 process-intensive, 잘못 설계된 매크로, add-ins 는 Visual C++를 느려지게 하기 때문입니다. 이러한 것을 점검하기 위해서는 도구 메뉴에서 Customize를 선택합니다. 로드 된 add-ins 과 매크로는 모두 Add-ins and Macro Files 탭에 나열되어 있습니다. 이들이 성능을 떨어뜨리는지 테스트하기 위해서는 모든 add-ins 와 매크로에 대해서 체크 박스를 선택하지 않습니다. 이들 add-ins 과 매크로가 로드 되지 않았는지 확인하기 위해서 Visual C++를 종료하였다가 다시 구동 시킵니다.
- 마이크로소프트 운영 체제가 아닌 다른 운영 체제에서 remote 상에 파일들이 위치하게 되는지 확인하시기 바랍니다. 여러분의 네트워크 클라이언트 소프트웨어가 적절하게 설정되어 있는지 확인하시기 바랍니다. 증가한 네트워크 트래픽은 성능에 영향을 줄 수도 있습니다.
- Project 종속 관계 또한 빌드하는데 소요되는 시간을 증가시킬 수도 있습니다. 더 자세한 정보는 Microsoft 기술 자료에 있는 다음의 문서를 참조하십시오.
- Q229030 BUG: A Workspace with Many Dependencies May Appear to Hang
- 파일에 대한 긴 경로는 성능을 저하 시킬 수도 있습니다, Visual C++ 가 Include 파일들의 위치를 검색해야 하는 경로가 많을수록 compilation은 오래 걸릴 것입니다. 네트워크 경로를 사용하는 것 역시 성능문제의 원인이 될 수 있습니다. 프로젝트에서 지정한 검색 경로를 찾는 것은 다음의 단계들을 따르시기 바랍니다.
- 프로젝트 메뉴에서 설정을 클릭하시기 바랍니다.
- 설정 대화 상자에서 C/C++ 탭을 선택하시기 바랍니다.
- Category 의 드롭다운 목록에서 Preprocessor 를 선택하시기 바랍니다.
- Project-specific include paths는 부가적인 include 디렉터리 편집 상자 내에 존재합니다.
- 도구 메뉴상에서 옵션을 클릭합니다.
- 옵션 대화 상자에서 디렉터리 탭을 선택하시기 바랍니다.
- Show directories for list 에서 Include files 를 선택합니다.
- 시스템 가상 메모리와 하드 디스크가 부족할 수도 있습니다. 필요하다면 RAM을 추가하거나 대용량의 하드 디스크를 추가함으로써 성능을 개선할 수도 있습니다.
Windows NT 가 실행 중인 컴퓨터들의 메모리 사용을 모니터하기 위해서는 작업 관리자를 사용하시기 바랍니다. Windows 95 또는 Windows 98 이 실행 중인 컴퓨터들 상에서는 Resource Meter를 사용할 수도 있습니다. Resource Meter를 설치하기 위해서는 제어판에 있는 프로그램 추가/ 삭제에서 Windows 설정 탭을 선택하고 시스템 도구를 두 번 누릅니다. Resource Meter 는 도구들 중에 나열되어 있습니다. 체크 박스에 표시를 하고 Resource Meter를 설치하기 위해서 확인을 누릅니다. Visual C++ 에서 제공되는 Process Viewer (PView.exe)도 사용할 수 있습니다. - 다른 프로그램 또는 서비스들은 귀중한 CPU 시간과 메모리를 활용하고 있을 수도 있습니다. 그런 경우 일시적으로 시스템 시작 폴더에서 제거하고 해당 컴퓨터를 재시작 할 수도 있습니다. Windows NT가 실행중인 시스템에서는 하나 이상의 시작 그룹이 존재할 수도 있습니다. 그런 모든 시작 그룹을 비우시기 바랍니다. CPU와 메모리의 활용을 모니터 하기 위해서 이전 단계에서 언급한 도구를 사용할 수도 있습니다.
사용자 정의(Customizing)와 시작 그룹(Startup group) 비활성화에 대한 더 자세한 정보는 Microsoft 기술 자료에 있는 다음의 문서를 참조하십시오.- Q152122 How to Customize the Start or Programs Menu
- Q81606 Disabling the Startup Group in Windows
- Background에서 실행 중인 Antivirus 프로그램은 여러분이 작업하는 파일을 스캐닝 할 수 있습니다. 바이러스 스캐너를 일시적을 사용하지 못하도록 하면 Visual C++ 성능을 향상시켜 줍니다. 그러므로 보다 적게 검색하도록 바이러스 스캐너를 설정하거나 최근의 업데이트에 관해서 소프트웨어 제조 업체로 문의하시기 바랍니다.
- 불량 드라이버는 성능문제의 원인이 될 수도 있으며 잠재적으로는 repainting delays 의 원인이 될 수도 있습니다. 성능문제의 원인이 될 가능성이 있는 디스플레이 드라이버를 제거하시기 바랍니다. Windows NT 가 실행 중인 컴퓨터들 상에서 Windows NT VGA 모드에서 해당 문제를 재현해보시기 바랍니다. Windows 95 또는 Windows 98 이 실행 중인 컴퓨터들 상에서 디스플레이 어뎁터를 제어판내의 디스플레이 어플리케이션을 사용하여 표준 VGA 로 바꾸시기 바랍니다. 이들 모드에서 서드 파티 디스플레이 드라이버들은 사용 불가능하게 됩니다.
드라이버에 오류가 있는 경우 업데이트 된 버전을 구해보시기 바랍니다. 일시적인 대처 방안은 디스플레이 설정을 바꾸는 방법도 있습니다. 제어판으로부터 디스플레이 프로그램을 시작하고 설정 탭을 선택합니다. 데스크 톱 해상도, 화면 주사율, 시스템에서 사용되는 색상의 수를 변경하시기 바랍니다.