我有一个运行速度很慢的程序(即使在发布时也需要 20 秒),所以为了修复它,我尝试使用 Visual Studio 的内置分析器。但是,当我在启用分析的情况下运行程序时,它会在不到一秒的时间内完成。这使得很难找到瓶颈。我会发布代码,但它很长。是否有任何明显或不那么明显的原因导致这种情况发生?
编辑: 好的,所以我将问题缩小到一堆 free() 调用。当我将它们注释掉时,程序运行的时间与启用分析的时间相同。但是现在我有内存泄漏:-/
最佳答案
原因是当您在 Visual Studio 中运行应用程序时,调试器会附加到它。当您使用分析器运行它时,调试器未附加。
如果您按 F5 运行程序,即使使用 Release 构建,调试器仍会附加。
如果您尝试自行运行 .exe,或通过 IDE 使用“调试 > 不调试启动”(或仅按 Ctrl+F5)运行程序,应用程序的运行速度应该与使用探查器时一样快。
关于c++ - 为什么启用分析后我的程序运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1964573/