【问题标题】:Application runs very slow in debug mode应用程序在调试模式下运行非常慢
【发布时间】:2013-12-09 09:08:07
【问题描述】:

我的 C# 程序应该每秒执行 30 次异步任务。

该程序作为独立的 Windows 应用程序运行良好。

但是当它在 Visual Studio 2013 Professional 环境中以调试模式运行时,性能非常差 - 每秒只有 5 个任务,即使代码中没有任何断点。

慢速调试是 VS.Net 2013 的一个“特性”吗?有没有办法调试时间要求严格的 C# 应用程序?

【问题讨论】:

  • 您说它在调试模式下运行缓慢,但没有别的。它在发布版本中运行得更快,但仍在调试器下吗?直接运行 Debug 构建(在 VS 之外)怎么样?
  • 有一些已知的报告。首先,更新您的显卡驱动程序(是的,这可能是个问题)。其次,您运行的是 Windows 8.1 吗?如果是这样 - IE11 也存在某些已知问题
  • 调试下Release性能同样差。但是当我在没有调试的情况下启动程序时就可以了。该任务进行大量计算,因此图形卡没有问题。我的电脑在 Win 7 Prof. 下运行。在 VS 之外的调试版本也可以运行。
  • 异常日志记录会导致极大的减速。如果正在记录异常,请检查输出窗口。
  • 日志中没有异常,但是该程序使用 log4Net 库进行了大量日志记录。日志记录是必需的功能,无需调试即可正常工作。

标签: c# performance debugging visual-studio-2013


【解决方案1】:

感谢 user1720293 关于日志记录的想法。性能大幅下降的主要原因是通过log4net.Appender.ConsoleAppender 登录控制台。在配置文件中注释掉一行后问题就消失了

  <root>
    <level value="DEBUG"/>
    <!-- here's the source of the problem
    <appender-ref ref="ConsoleAppender"/>
    -->
    <appender-ref ref="RollingFile"/>
  </root>

【讨论】:

    【解决方案2】:

    我会尝试通过以下方式消除一些事情: 删除所有手表项目 隐藏本地人、汽车窗口等

    您是否正在追踪大量文本?您也可以尝试不这样做,看看是否会有所不同。

    Visual Studio 是否被您的防病毒软件单独放置?

    如果不是纯 c# 代码并且在任何地方都涉及到 c++,那么调试性能很差。

    这些都不是 Visual Studio 13 特定的建议。 您之前是否在 2012 年或 2010 年运行过此代码?

    【讨论】:

    • 切断日志记录,调试模式下的性能跃升到每秒16个任务,太神奇了,log4net库与这种调试性能下降有什么关系,为什么它不影响支架的性能单独申请?
    【解决方案3】:

    您说您正在大量使用 log4net。如果每次登录时都打印到输出流,这将导致性能不佳。

    控制台输出总是很慢。考虑使用预处理器来挑选您想要的日志记录。

    #if HEAVY_LOGGING_MODE
    //log log log
    #endif
    

    Log4Net 可能支持更好的机制。检查文档!

    【讨论】:

      【解决方案4】:

      代码中的大量断点可能会影响调试模式下的性能。 请尝试删除无用的断点。

      【讨论】:

      • 其实这不是真的。您可以有任意数量的断点,但肯定不会像报告的那样降低 IDE 的性能。此外,即使几乎没有任何断点,用户也报告了同样的问题
      • 如果有条件断点,条件永远不会为真,那么在通过调试器执行时肯定会减慢程序的速度。在这种情况下可能不相关,但仍然。
      猜你喜欢
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多