0

我一直在为性能问题苦苦挣扎,最近我意识到从 Visual Studio 运行时获得的性能没有任何意义。

然而,令我惊讶的是,我的性能因调试方式而异:当我从 Visual Studio 运行程序时,即使在发布模式下,它也比我直接运行程序时慢 10 倍以上将其附加到 Visual Studio 调试器。你知道这种差异来自哪里吗?

4

2 回答 2

2

当您在调试器中运行 Visual 时,它会在运行时将大量测试插入到您的可执行文件中:

  • 堆损坏检查
  • 堆栈损坏检查
  • 内存泄漏检查
  • 一些更微妙的,特别是如果你运行 CRT

它通过插入一个取代标准的自定义内存分配器库来做到这一点。您对 的所有调用new以及delete所有堆栈操作(进入/退出函数)都会被监视......

所以是的,对于性能分析,不要运行 VS 调试器。

如果您想展开代码中发生的事情,可以在这里查看答案:
是否有一个好的 Valgrind 替代 Windows?

特别是第二个答案有有趣的指针。建议的工具之一非常有用: http: //www.codersnotes.com/sleepy

于 2013-06-19T14:51:09.403 回答
1

即使您在发布模式下构建,VS 中的默认运行模式是附加调试器(这总是较慢,因为它插入了一堆检查和监控)。如果您想在 VS 中测试“正常”运行,请使用“Debug>Start without Debugging”或 Ctrl-F5。

于 2013-06-19T15:27:24.017 回答