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


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

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

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