Поделиться через


Каковы затраты на производительность трассировки программного обеспечения?

Как правило, производительность трассировки программного обеспечения очень мала. Код сведен к минимуму, буферы управляются эффективно, а сообщения записываются в двоичном формате. Кроме того, форматирование сообщений трассировки, которое значительно снижает производительность, откладывается до тех пор, пока пользователь не решит отформатировать и отобразить сообщения трассировки.

При использовании макросов трассировки программного обеспечения 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 для реализации трассировки в драйвере могут возникнуть потери производительности. Эффект зависит от метода реализации.