DOCUMENT:Q236399 11-JUN-2002 [visualc] TITLE :HOWTO: Troubleshoot Visual C++ Performance Problems PRODUCT :Microsoft C Compiler PROD/VER::5.0,6.0 OPER/SYS: KEYWORDS:_IK920 kbwizard kbClassView kbEditor kbide kbVC500 kbVC600 kbClassWizard kbFAQ kbGrpDST ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual C++, 32-bit Enterprise Edition, versions 5.0, 6.0 - Microsoft Visual C++, 32-bit Professional Edition, versions 5.0, 6.0 - Microsoft Visual C++, 32-bit Learning Edition, version 6.0 ------------------------------------------------------------------------------- IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base: Q256986 Description of the Microsoft Windows Registry SUMMARY ======= This article documents steps that could improve the performance of Visual C++ in various scenarios. All of the following scenarios apply to Visual C++ 6.0, and some apply to Visual C++ 5.0 as well. MORE INFORMATION ================ WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk. Suggestions to Improve Visual C++ Performance --------------------------------------------- - Every workspace has files with .ncb and .opt extensions associated with it. These files can become corrupt. To regenerate them, first close the workspace. Then go to the workspace directory to rename or delete these two files. Reopening the workspace will regenerate them. You may experience delays when the files are being created. NOTE: The .ncb file holds information for ClassView, IntelliSense, and the WizardBar. The .opt file is the workspace configurations file. Deleting the .opt file will result in the loss of current window positions, breakpoints, and a few other minor settings. For additional information, please click the article number below to view the article in the Microsoft Knowledge Base: Q173164 PRB: Loading a Workspace Is Slow in Visual C++ - Visual C++ 6 only: IntelliSense can slow Visual C++. To check and resolve this, disable IntelliSense by selecting Options from the Tools menu. On the Editor tab, clear all checkboxes in the "Statement completion options" group. For additional information, please click the article number below to view the article in the Microsoft Knowledge Base: Q153284 INFO: Limitations of IntelliSense in Visual C++ 6.0 - Source code control software, such as Microsoft Visual SourceSafe, that integrates with the Visual C++ integrated development environment (IDE) can be configured to connect to a source code server during Visual C++ startup. In such cases, a loss in network connectivity will cause Visual C++ to start up very slowly. To improve performance, either ensure proper network connectivity or disable the source code control software integration with the Visual C++ IDE. To do the latter, quit Visual C++, and then use RegEdit.Exe to locate the following registry key and set its Disabled value to (DWORD) 0x00000001: HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Source Control\Disabled NOTE: Be sure to quit Visual C++ before modifying the registry keys; otherwise, your changes will not take effect. - Source code control software can perform background status updates on Visual C++ projects under source code control. If this feature is enabled, these updates may cause the IDE to respond slowly. To disable these background updates, select Options from the Tools menu. Then click the Source Control tab, and clear the Perform Background Status Updates checkbox. For additional information, please click the article number below to view the article in the Microsoft Knowledge Base: Q195375 FIX: ClassView Can Be Very Slow When SourceSafe Is Being Used - Place your source files in fewer than 64 network directories. This helps because the method that Visual C++ uses to get file change notifications scans the 64th and above directories every 5 seconds. For additional information, please click the article number below to view the article in the Microsoft Knowledge Base: Q216098 PRB: Visual C++ IDE Slows When Files Are in Many Directories - The WizardBar may cause performance problems when you use the source editor and resource editor. Disabling the WizardBar and restarting Visual C++ may improve performance. For additional information, please click the article numbers below to view the articles in the Microsoft Knowledge Base: Q202591 BUG: Developer Studio Source and Dialog Editors Respond Slowly Q170511 PRB: WizardBar Notification Slows Down Dialog Editor - Splitting large numbers of resources into resource-only DLLs can improve the performance of the IDE. You can see this by adding approximately 100 dialogs to a Microsoft Foundation Classes (MFC) application created by the AppWizard. Associating any controls in those dialogs to code using the ClassWizard will result in performance problems for that dialog. Before embarking on a project, you might consider designing your project to keep localized resources inside resource-only DLLs. See the following MFC technical note in the MSDN Online Libraries (http://msdn.microsoft.com/resources/libraries.asp) for more information: TN057: Localization of MFC Components You may also want to consider grouping your resources and placing them in separate resource files (.rc) rather than having them in one file. See the following MFC technical note in the MSDN Online Libraries (http://msdn.microsoft.com/resources/libraries.asp) for more information: TN035: Using Multiple Resource Files and Header Files with Visual C++ (http://msdn.microsoft.com/library/devprods/vs6/visualc/vcmfc/_mfcnotes_tn035.htm) - Visual C++ 6 only: Editing source code during a debug session may be slow. Disabling the Edit and Continue options might improve performance. To do so, from the Tools menu select Options. On the Debug tab, clear the Debug Commands Invoke Edit and Continue checkbox. You might also want to avoid using the Edit and Continue compiler switch /ZI and use /Zi instead. - Be aware of all add-ins and macros that are running within the IDE because process-intensive or poorly designed macros and add-ins can slow Visual C++. To check this, from the Tools menu, select Customize. All loaded add-ins and macros are listed on the Add-ins and Macro Files tab. To test whether these are degrading performance, clear the checkboxes for all the add-ins and macros. Quit Visual C++ and restart to ensure that these add-ins and macros are unloaded. - Find out whether your files are located on a remote non-Microsoft operating system. Make sure that your network client software is configured properly. Increased network traffic may also affect performance. - Project dependencies might also increase build time. For additional information, please click the article number below to view the article in the Microsoft Knowledge Base: Q229030 BUG: A Workspace with Many Dependencies May Appear to Hang Exporting make files for the projects could also be slow in such cases. - A large search path for include files can also degrade performance. The more paths Visual C++ must search to locate the include files, the longer compilation will take. Using network paths can also cause performance problems. To find the search paths that are project-specific, follow these steps: 1. On the Project menu, click Settings. 2. In the Settings dialog box, select the C/C++ tab. 3. Select Preprocessor from the Category drop-down list. 4. The project-specific include paths are located in the Additional include directories edit box. To find the search paths that apply to Visual C++ as a whole, follow these steps: 1. On the Tools menu, click Options. 2. In the Options dialog box, select the Directories tab. 3. In the Show directories for list, select Include files. - You may be running short of system virtual memory and hard disk space. If needed, adding more RAM (Random Access Memory) or adding a larger hard disk may improve performance. On computers running Windows NT, use Task Manager to monitor memory usage. On computers running Windows 95 or Windows 98, you can use Resource Meter. To install Resource Meter, go to Add/Remove Programs in Control Panel, select the Windows Setup tab, and double-click System Tools. Resource Meter should be listed as one of the tools. Select the checkbox and click OK to install it. You may also use Process Viewer (PView.exe), which is shipped with Visual C++. - Other programs or services may be utilizing valuable CPU time and memory. In such cases, you might temporarily remove programs from the system Startup folder and restart the computer. On systems running Windows NT, there could be more than one Startup group; empty all such Startup groups. You can use the tools mentioned in the previous step to monitor CPU and memory utilization. For additional information about customizing and disabling the Startup group, please click the article numbers below to view the articles in the Microsoft Knowledge Base: Q152122 How to Customize the Start or Programs Menu Q81606 Disabling the Startup Group in Windows - Antivirus programs running in the background may be scanning the files that you are working on. If disabling the virus scanner temporarily improves Visual C++ performance, then configure the virus scanner to scan less often or contact the software vendor for the latest updates. - A bad driver could be the cause of performance problems, potentially causing repainting delays. Eliminate display drivers as a possible cause of a performance problem. On computers running Windows NT, try to reproduce the problem in the Windows NT VGA mode. On computers running Windows 95 or Windows 98, change the display adapter to standard VGA by using the Display application in Control Panel. In these modes, third-party display drivers are disabled. If the driver is at fault, try to obtain an updated version. A temporary workaround might involve changing the display settings. Start the Display program from Control Panel, and then select the Settings tab. Change either the desktop resolution, refresh frequency, or number of colors being used by the system. - The .OPT file in the project folder may get corrupted. One symptom is when Visual C++ inserts a large number of breakpoints, some of them multiple times. In this case, after starting to debug the application, the IDE becomes unresponsive for several minutes. To troubleshoot, close the workspace, delete the .OPT file, reopen the workspace, and reset any desired breakpoints and/or project settings that were stored in the .OPT file. Additional query words: kbdevstudio kbdsupport ====================================================================== Keywords : _IK920 kbwizard kbClassView kbEditor kbide kbVC500 kbVC600 kbClassWizard kbFAQ kbGrpDSTools kbvc600faq Technology : kbVCsearch kbAudDeveloper kbVC500 kbVC600 kbVC32bitSearch kbVC500Search Version : :5.0,6.0 Issue type : kbhowto ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2002.