Я использую 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()
является очень маленький метод (с точки зрения кода), он может быть хорошим кандидатом для встраивания.