软件跟踪的性价比如何?

通常,软件跟踪的性能成本非常小。 代码最小化,缓冲区得到有效管理,消息以二进制格式写入。 此外,在用户选择设置跟踪消息的格式并显示跟踪消息之前,会延迟设置跟踪消息的格式,这是一个很大的性能消耗。

使用 WPP 软件跟踪 宏将软件跟踪添加到驱动程序时,几乎没有性能成本,除非为跟踪会话启用了提供程序。

WPP 宏相当于软件跟踪代码的 If 语句中的三个条件检查。 除非启用提供程序,否则这些检查会阻止生成任何跟踪消息。 WPP 宏生成以下形式的代码:

If (WPP_CHECK_INIT && WPP_LEVEL_FLAGS_ENABLED) {
    Call trace_message_routine
}

在此生成的代码中,WPP_CHECK_INIT由一个条件检查组成。 如果只有一个级别或标志筛选器,WPP_LEVEL_FLAGS_ENABLED包含一个条件检查。 否则,WPP_LEVEL_FLAGS_ENABLED由两个条件检查组成。

有关如何排除WPP_CHECK_INIT 检查以提高性能的详细信息,请参阅是否可以优化 WPP 宏在跟踪之前生成的条件检查?

注意

如果使用 WPP 软件跟踪以外的方法在驱动程序中实现软件跟踪,则可能会有一些性能成本。 效果取决于实现方法。