Fer*_*eia 8 c# performance trace system.diagnostics
使用System.Diagnostics跟踪时,是否在发布模式下不在生产 ASP.NET应用程序上删除"默认"跟踪侦听器时会产生显着(可测量)性能影响,在编译时定义常量但在运行时没有附加调试器?TRACE
为了澄清,问题是"默认"跟踪侦听器对使用其他跟踪侦听器的应用程序的影响,而不是System.Diagnostics跟踪的替代方案.
没有连接调试器时,是否有任何衡量默认跟踪侦听器的影响?是否已经对生产中的影响做了任何基准测试,从而忽略了代码中的"remove"元素:
<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>
Run Code Online (Sandbox Code Playgroud)
这个问题与.NET跟踪不同:什么是"默认"监听器?从某种意义上说,当在Visual Studio下运行并更新调试UI时,其他问题集中在默认侦听器的影响上,而这个问题主要关注生产环境中的发布代码.
Ree*_*sey 14
如果使用默认跟踪侦听器保留跟踪,则可能会对性能产生重大影响.
如果您想要生产就绪性能跟踪,我强烈建议使用.NET 4.5中的EventSource类而不是跟踪方法.这可以通过创建ETW事件源与PerfView一起使用,即使在生产中输出跟踪信息,也几乎不会影响运行时.
保留默认侦听器会导致框架通过OutputDebugString记录调用.即使在没有调试器的发布版本中,这也会对性能产生重大影响.
| 归档时间: |
|
| 查看次数: |
3161 次 |
| 最近记录: |