TraceProcessing 库与 PerfView 使用的 TraceEvent 库相比如何?
How does the TraceProcessing library compare to the TraceEvent lIbrary used by PerfView?
似乎有很多不同的方法来处理解析 ETW 事件(TraceProcessing、TraceEvent、ETW2JSON 等)。我对 TraceProcessing 库和 TraceEvent 库之间的权衡特别感兴趣。
- 它们适用于不同的用例吗?
- TraceProcessing 是作为 TraceEvent 的后续或演变而来的吗?
- 为什么要选择 TraceProcessing 库而不是 TraceEvent 库?
(我是 Microsoft 的一名开发人员,从事 TraceProcessor 项目。)
与 ETW2JSON 相比,我对 TraceEvent 更熟悉一些,但同样的答案适用于这两种情况。
每个都是由 Microsoft 内部的不同组织开发的,以最好地支持我们自己的性能和诊断调查。在某些情况下,我们从其他库中获取了 TraceProcessor 的设计灵感或线索,但主要是我们根据自己的设计理念为特定用例开发了它。
这些差异意味着每个库都有自己的性能原则,API design/consistency,以及基础广泛的 ETW 支持与开发良好的第一个 class 支持某些具体的东西。
TraceEvent 确实有 .NET/CLR 支持,但主要侧重于成为 C++ ETW API 的托管包装器。它确实支持其他事件,但非常有限。
总而言之,TraceEvent 非常适合第一个 class .NET/CLR 数据和其他地方的 "basics"。
TraceProcessor 为您可以在 XPerf 和 WPA 等其他工具中看到的系统类型和诊断数据提供强大的优先 class 支持。我们在整个库中推动了一个干净、一致、高性能的 API,并强调强类型以最自然的形式呈现每种类型的数据。
似乎有很多不同的方法来处理解析 ETW 事件(TraceProcessing、TraceEvent、ETW2JSON 等)。我对 TraceProcessing 库和 TraceEvent 库之间的权衡特别感兴趣。
- 它们适用于不同的用例吗?
- TraceProcessing 是作为 TraceEvent 的后续或演变而来的吗?
- 为什么要选择 TraceProcessing 库而不是 TraceEvent 库?
(我是 Microsoft 的一名开发人员,从事 TraceProcessor 项目。)
与 ETW2JSON 相比,我对 TraceEvent 更熟悉一些,但同样的答案适用于这两种情况。
每个都是由 Microsoft 内部的不同组织开发的,以最好地支持我们自己的性能和诊断调查。在某些情况下,我们从其他库中获取了 TraceProcessor 的设计灵感或线索,但主要是我们根据自己的设计理念为特定用例开发了它。
这些差异意味着每个库都有自己的性能原则,API design/consistency,以及基础广泛的 ETW 支持与开发良好的第一个 class 支持某些具体的东西。
TraceEvent 确实有 .NET/CLR 支持,但主要侧重于成为 C++ ETW API 的托管包装器。它确实支持其他事件,但非常有限。
总而言之,TraceEvent 非常适合第一个 class .NET/CLR 数据和其他地方的 "basics"。
TraceProcessor 为您可以在 XPerf 和 WPA 等其他工具中看到的系统类型和诊断数据提供强大的优先 class 支持。我们在整个库中推动了一个干净、一致、高性能的 API,并强调强类型以最自然的形式呈现每种类型的数据。