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