【问题标题】:System.Diagnostics.Trace OverheadSystem.Diagnostics.Trace 开销
【发布时间】:2011-04-25 15:27:30
【问题描述】:

我有一个应用程序,它几乎在它使用的所有方法中都使用了 Trace.WriteLine。该程序有几个不同的问题。

我想知道的是,经常使用 System.Diagnostics.Trace.WriteLine 是否有任何开销?当我发现问题时,我正在寻求解决问题,我个人觉得在程序中几乎每一个方法中使用 Debug/Trace WriteLine 都会带来性能成本。

编写这个应用程序的程序员很着急,还包括了一些过去给我们带来麻烦的资产声明。

【问题讨论】:

  • 您是否对应用程序进行了概要分析?
  • 不是直接回答:您是否考虑过使用类似 Log4Net 的东西?这使您能够在需要时动态打开日志记录。
  • Mitch - 真的没有理由记录这些方法中发生的事情。有问题的程序员落后了,根本不知道有更好的方法来跟踪程序与第三方应用程序的交互。所以解决办法就是简单地查明代码本身是否会导致一些性能损失。我真的从未使用过 System.Diagnostics,这让我简单地询问它可能导致什么样的性能问题。
  • @Oded - 我没有对应用程序进行分析。在我建议这样做之前,我想对这个主题有一些想法。我基本上证实了我的想法,Trace 语句可能会导致性能问题,而且除了没有合乎逻辑的理由之外,每个方法都需要一个丑陋的代码。我需要一个比“丑陋代码”更好的理由来删除所说的丑​​陋代码。

标签: .net c#-2.0 system.diagnostics


【解决方案1】:

可能Trace 可能会导致您的应用程序出现性能问题。特别是如果它被用于程序中的每一个方法。

幸运的是Trace.WriteLine 附加了一个Conditional 属性:Trace。如果您在没有定义 Trace 的情况下编译应用程序,它将像调用根本不存在一样编译。这将允许您快速进行眼球测试,看看它是否会影响性能。

了解的唯一方法是将应用程序连接到分析器。这将明确告诉您Trace.WriteLine 是否对您的应用程序有问题。

【讨论】:

  • 这回答了我的问题。负责设计此程序的程序员根本不知道跟踪程序流程的另一种方法。
猜你喜欢
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
相关资源
最近更新 更多