В log4j повышает ли производительность проверка isDebugEnabled перед записью в журнал?JAVA

Программисты JAVA общаются здесь
Anonymous
В log4j повышает ли производительность проверка isDebugEnabled перед записью в журнал?

Сообщение Anonymous »

Я использую Log4J в своем приложении для ведения журналов. Раньше я использовал вызов отладки, например:
Вариант 1:

Код: Выделить всё

logger.debug("some debug text");
но некоторые ссылки предполагают, что лучше сначала проверить isDebugEnabled(), например:
Вариант 2:

Код: Выделить всё

boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
logger.debug("some debug text");
}
Поэтому мой вопрос: «Повышает ли вариант 2 производительность каким-либо образом?».
Потому что в любом случае платформа Log4J имеет такую ​​же проверку для debugEnabled. Для варианта 2 может быть полезно использовать несколько операторов отладки в одном методе или классе, где платформе не нужно вызывать метод isDebugEnabled() несколько раз (при каждом вызове); в этом случае он вызывает метод isDebugEnabled() только один раз, а если Log4J настроен на уровень отладки, то фактически он вызывает метод isDebugEnabled() дважды:
  • В случае присвоения значения переменной debugEnabled и
  • Фактически вызывается методом logger.debug().
Я не думаю, что если мы напишем несколько операторов logger.debug() в методе или классе и вызовем метод debug() в соответствии с вариантом 1, то это будет накладными расходами для платформы Log4J по сравнению с вариантом 2. Поскольку isDebugEnabled() — очень маленький метод (с точки зрения кода), он может быть хорошим кандидатом для встраивания.>

Подробнее здесь: https://stackoverflow.com/questions/963 ... erformance

Вернуться в «JAVA»