使用时System.Diagnostics
跟踪,如果不删除“默认”跟踪侦听器,是否会对性能产生重大(可测量)影响?生产ASP.NET应用在release模式,与TRACE
在编译时定义的常量,但在运行时没有附加调试器?
为了澄清,问题是关于“默认”跟踪侦听器对使用其他跟踪侦听器的应用程序的额外影响,而不是关于 System.Diagnostics 跟踪的替代方案。
当没有附加调试器时,是否有任何措施来衡量默认跟踪侦听器的影响?是否已经完成了从代码中省略“删除”元素对生产的影响的基准测试,如下所示:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<remove name="Default" />
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\myListener.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
这个问题不同于.NET 跟踪:什么是“默认”侦听器? https://stackoverflow.com/questions/8010255/net-tracing-what-is-the-default-listener从某种意义上说,另一个问题的重点是在 Visual Studio 下运行并更新调试 UI 时默认侦听器的影响,而这个问题的重点是在生产环境中发布代码。
如果继续使用默认跟踪侦听器进行跟踪,可能会对性能产生重大影响。
如果您想要生产就绪的性能跟踪,我强烈建议使用事件源 http://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource.aspx.NET 4.5 中的类而不是跟踪方法。这适用于PerfView http://www.microsoft.com/en-us/download/details.aspx?id=28567通过创建 ETW 事件源,即使在生产中输出跟踪信息,对运行时也几乎没有影响。
保留默认侦听器会导致框架通过以下方式记录调用输出调试字符串 http://msdn.microsoft.com/en-us/library/windows/desktop/aa363362%28v=vs.85%29.aspx。这个可以有重大影响 https://stackoverflow.com/a/729561/65358即使在没有调试器的发布版本中,性能也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)