.NET人员中进行跟踪的每个示例都删除了“Default”侦听器:

<configuration>
  <system.diagnostics>
    <sources>
      <source name="TraceSourceApp" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch">
        <listeners>
          <add name="ConsoleListener"/>
          <add name="ETWListener"/>
          <remove name="Default"/>
        </listeners>

什么是默认侦听器,默认情况下为什么存在?

微软的家伙做了benchmarks of the overhead with different listeners:
Default                    |===============================14,196 ms=====/ /================>
TextWriterTraceListener    |=========211 ms======>
EventProviderTraceListener |=> 77ms
Default跟踪侦听器是什么,为什么这么慢?是 OutputDebugString 吗? OutputDebugString 是否真的比写入文件慢两个数量级?

是否存在仅使用 TraceListener 的.NET OutputDebugString

默认跟踪侦听器是什么?为什么它这么慢?为什么通常删除它?如果很糟糕,为什么默认它呢?

最佳答案

从那篇博客文章中尚不清楚代码是如何运行的,但是 DefaultTraceListener 的记录如下:



因此,如果Debugger.Log实际上正在打印到UI窗口(并且很有可能滚动它等),我可以看到这导致了很多减速。

08-27 22:20
查看更多