Pessoal,
Dúvida simples mas que vai dar muitas páginas de discussão.
Qual código é mais performático? Ou melhor, qual código necessitará de menos memória para execução?
// Opção 1 : chamada de debug no log4j concatenando a mensagem na hora
Logger.getLogger(this.getClass()).debug("O processo " + process.getName() + " finalizou em " + time);
// Opção 2 : fazendo a verificação se o level de log esta ativo
if( Logger.getLogger(this.getClass()).isDebugEnabled() ) {
Logger.getLogger(this.getClass()).debug("O processo " + process.getName() + " finalizou em " + time);
}
// Opção 3 : Usando constante para a mensagem de log
public static final String MESSAGE_PROCESS_END = "O processo %s finalizou em %s";
...
Logger.getLogger(this.getClass()).debug(String.format(MESSAGE_PROCESS_END, process.getName(), time));
Ou será que existe uma combinação das opções acima que pode ser a ideal?
Outra coisa. Existe diferença entre:
// Opção 1
Logger log = Logger.getLogger(this.getClass());
// Opção 2
Logger log = Logger.getLogger(Teste.class);
Me disseram que o this.getClass() vai fazer a JVM usar reflection para descobrir qual a classe … lol … eu não acredito nisso, mas não custa perguntar para garantir.
Obrigado pelas opiniões.
Ps: Se algum moderador ou admin achar que este post não se enquadra na sessão off-topic, favor mover para a sessão correta … afinal, estou falando de java
[]'s