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