我在C#中有一个应用程序,它连接到数据库并生成一些Excel报告。
当我在调试模式下在Visual Studio中运行应用程序时,此操作需要大约。 101736毫秒。
当我打开 bin \ Debug 文件夹并从那里运行可执行文件时,相同的进程(相同的数据库,相同的参数)需要33135毫秒。
但我正在运行相同的程序。
什么可能导致如此巨大的性能差异?
我已经多次这样做了,从Visual Studio运行应用程序总是比从Windows资源管理器运行可执行文件慢得多。
我正在使用Visual Studio 2008 C#Express Edition。
答案 0 :(得分:3)
Visual Studio调试器减速的主要原因如下:
return a+b;
的操作并且调用了数百个成千上万次,你会受到重创。Debug.WriteLine
或Trace.WriteLine
多次(读取数千次),则可能会降低您的应用程序关闭速度到调试器。答案 1 :(得分:0)
从visual studio运行会导致大量调试过程随之运行。这使您可以在某些点处中断并检查局部变量(以及许多其他事物)。如果你编译一个发布版本,那么改进可能会更加明显,因为visual studio会在启用优化器标志的情况下进行编译。
答案 2 :(得分:0)
它可能是VS中附加的调试器。
如果你有很多控制台输出或第一次机会异常,你会得到相当大的减速。
答案 3 :(得分:0)
调试可以减慢执行速度。如果选择“Start Without Debugging”,则性能应与在Visual Studio外部执行文件时的性能相同。
与直接执行文件相比,有些事情要避免在执行调试期间使执行速度降低:
if (Debugger.IsAttached) { ... }
)与发布版本相比,要避免的一些事情会减慢调试版本中的执行速度(无论您是在Visual Studio中运行还是直接执行文件):
DEBUG
来有条件地包含代码(使用#if DEBUG ... #endif
)WriteLine
- 方法或传递ToString
方法覆盖速度较慢的对象)。请注意,我的答案假设默认配置正在使用中。(例如,可以禁用发布版本的代码优化,并为调试版本启用代码优化)。