2010-03-07 87 views
2

这是一个模糊的问题,但有什么我可以做的关于visual studio减慢应用程序?如果我在Visual Studio之外运行可执行文件,它的运行速度非常快。如果我在启用调试器的情况下在Visual Studio中运行它,它的运行速度将降低近200倍。我试图卸载并重新安装Visual Studio无济于事。我删除了我的所有插件(蚂蚁& resharper),但仍然没有。我在另一台电脑上的视觉工作室内运行了该项目,速度很正常。我能做些什么来解决这个问题?它似乎最近发生过,但可能逐渐发生。视觉工作室放缓应用程序

更新:我已经在其他视觉工作室中运行了它,并且保持了减速。我唯一的结论是我以应用程序的速度分配内存的方式导致调试器以某种方式减慢速度。任何人都有这方面的经验吗?

+0

病毒扫描仪? 。 – 2010-03-07 07:39:27

+0

加载和卸载DLL很多?总体速度较慢还是大幅度缩短启动时间? – 2010-03-07 07:50:07

+0

您的应用程序是否倾倒了大量的调试消息?如果是这样,可能是为什么。 – 2010-03-07 08:13:20

回答

2

通常,Visual Studio调试器不会减慢速度。这必须是特定于您的应用程序的东西。

例如,最近有一个关于SO的问题,来自某人在调试时得到OutOfMemoryException但不在调试器外部运行的情况。看起来这是由于他分配内存的方式 - 该技术对加载到内存中的程序集数量很敏感。大多数程序不会对调试器的这种被动效应敏感。也许你也正在受到与调试器相关的一些影响,但不完全是调试器的“故障”。


米奇小麦建议您可能正在运行病毒扫描程序。这让我想起了一个类似的软件,它将注意力集中在Visual Studio加载和卸载程序集上。这是一款提供“端点安全性”的VPN软件。它旨在检查您连接到VPN时正在运行的程序并确保它们符合安全策略。这意味着要通知每个装载的组件。

Visual Studio加载和卸载很多程序集。这个VPN软件对这个事实非常感兴趣,它实际上导致了一个BSOD - 我唯一一次看到一个应用程序导致蓝屏死机 - 因为它安装了一个文件系统过滤器等等,并且在内核模式下被通知。这加上某种错误足以使系统失效。

所以,一般来说,寻找一些软件,关心您的计算机上运行的一些软件。也许是“端点安全性”,也许是病毒扫描程序,也许是搜索索引器,或其他。

3

您是否从符号服务器上拉下符号?这是经济放缓的常见原因。在调试器中运行,如果许多被抛出和捕获可以减缓应用程序时,如果如果使用的VS 2008 +

+0

可能。工具+选项,调试+符号。 – 2010-03-07 11:47:21

4

例外设置,或者您的调试选项

检查_NT_SYMBOL_PATH是非常昂贵的。查看Visual Studio的输出窗口,您可以在其中看到抛出的异常。

+0

异常是我见过的调试器内部放缓的头号原因。转到“例外”对话框(在“调试”菜单上),让Visual Studio打破所有异常,而不仅仅是未处理的异常。 – 2010-03-07 10:24:33

+0

我有一个类似的问题,在调试过程中应用程序非常缓慢,但没有调试就像一个魅力跑。原来'devexpress' gridcontrol吞噬了很多'FormatException'。修复错误后,在调试模式下从35秒到1秒渲染网格。 – scheien 2014-02-25 12:47:13

0

VS调试器添加到您的代码附加命令,以允许它带来的所有功能。缺点可能会减慢你的应用程序。

也许这就是为什么当您在另一台计算机上运行可执行文件时,您的应用程序工作正常的原因。

然后,这是一个不应该打扰你的问题,因为应用程序的发布版本很重要 - 如果最后一个工作正常,谁会关心调试版本的性能。

+1

如果调试器的性能让你下降太多,以至于显着影响你的生产力,那么这是一个你应该关心的问题。 – 2010-03-07 12:51:13

+0

同意@SamHolder。我有一个WPF应用程序,它以调试模式挂起,这是因为我设置了图像控件的ImageSource,并且该值为空字符串或不可用程序集的路径时,调试器会挂起10-20几秒钟最终导致我的应用程序抓取并且我正在播放的音频(在应用程序中)波涛汹涌,应用程序几乎没有响应。在发布模式下,它工作正常。所以我必须诊断问题并解决放缓问题,因为我无法另外开发应用程序。 – cod3monk3y 2013-12-12 20:18:51

2

问题是,如果Windows检测到您的程序正在调试器下运行,那么它将丢弃在特殊的调试堆中。这似乎发生在操作系统级别,并且独立于编译的任何调试/发布模式设置。

您可以通过设置环境变量解决这个“功能”:_NO_DEBUG_HEAP = 1

同样的问题一直在推动我坚果一会儿;今天我发现以下,从这个帖子衍生出来: http://blogs.msdn.com/b/larryosterman/archive/2008/09/03/anatomy-of-a-heisenbug.aspx

+0

有趣!谢谢 – Dested 2010-12-09 00:46:42