Estou usando o Log4J no meu aplicativo para log. Anteriormente, eu estava usando a chamada de depuração como:
Opção 1:
logger.debug("some debug text");
mas alguns links sugerem que é melhor verificar isDebugEnabled()
primeiro, como:
Opção 2:
boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
logger.debug("some debug text");
}
Portanto, minha pergunta é " A opção 2 melhora o desempenho de alguma maneira? ".
Porque, em qualquer caso, a estrutura Log4J tem a mesma verificação para debugEnabled. Para a opção 2, pode ser benéfico se estivermos usando várias instruções de depuração em um único método ou classe, em que a estrutura não precisa chamar o isDebugEnabled()
método várias vezes (em cada chamada); nesse caso, ele chama o isDebugEnabled()
método apenas uma vez e, se o Log4J estiver configurado para o nível de depuração, na verdade, ele chama o isDebugEnabled()
método duas vezes:
- No caso de atribuir valor à variável debugEnabled, e
- Realmente chamado pelo método logger.debug ().
Eu não acho que se escrevermos várias logger.debug()
instruções no método ou classe e chamar o debug()
método de acordo com a opção 1, isso será uma sobrecarga para o framework Log4J em comparação com a opção 2. Como isDebugEnabled()
é um método muito pequeno (em termos de código), ele pode ser um bom candidato para inlining.