c - 为什么 Visual Studio 2010/12 在 Debug模式下运行程序会占用大量内存和时间?

标签 c visual-studio-2010 debugging visual-studio-2012

我有一个读取文本文件(大约 2.6 GB 大小)的项目,在某种程度上聚合数据并写出一个较小的文件。

我观察到,如果我在 Debug模式下从 Visual Studio 运行程序,运行会花费很多时间(大约 45 分钟)。

相反,如果我打开命令提示符,移至我的 Visual studio Projects 文件夹中的 Debug 文件夹并运行相同的 exe,它将在将近 10-15 分钟内完成。

我还观察到通过 Visual Studio 运行时内存消耗非常高。

我没有单步执行代码,也没有在其中设置任何断点。为什么 Visual Studio 运行相同的可执行文件比直接从 cmd 运行它花费的时间要长得多?

附言

  • 我尝试在此处搜索此类问题,但大多数问题都是关于 Visual Studio 在单步执行时花费很长时间,或者在 Debug模式下开始执行花费的时间太长。

  • 我找不到任何关于为什么在其他一切都相同的情况下相同的可执行文件在通过 Visual Studio 运行时花费的时间要长得多的任何信息。

最佳答案

程序在 Visual Studio 内部运行速度比外部慢的主要原因是 Debug Heap它做了很多错误检查。

尝试在项目设置(调试器 -> 环境)中将环境变量 _NO_DEBUG_HEAP 设置为 1 以禁用它(参见 docs)。

这应该会使它运行得更快,但显然你不会得到那么多的错误检查 - caveat emptor

关于c - 为什么 Visual Studio 2010/12 在 Debug模式下运行程序会占用大量内存和时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19030348/

相关文章:

C101--字符串与字符 :

c# - 无法将类型 'string' 隐式转换为 'System.Windows.Forms.ColumnHeader

c# - 简单/嵌套 foreach 到 linq(连接字符串和数据表行和列)

c++ - 为什么我在解决方案资源管理器窗口中得到一个外部依赖项文件夹(快捷方式)?

visual-studio - 防止在 Visual Studio 中加载符号

c - LinkedList节点的大小

c - 关于错误 "redefinition of struct"的谜题

c - 如何处理纯 C 中的严格枚举?

Scala 调试

xcode - 在 Xcode 6.2 中调试