In un sistema di registrazione, ogni uscita di registro è fatto da una classe di supporto con un metodo come questoQuanto è costoso Thread.getStackTrace()?
public void debug(String message) {
Logger logger = Logger.getLogger(getCallingClass());
logger.debug(message);
}
...
public Class getCallingClass() {
/*
Calls Thread.getStackTrace() and back traces until the class on the stack trace
!= this.getClass().
*/
return classFound;
}
Come costoso è questo a correre e potrebbe avere notevoli successi di performance?
invece di utilizzare un flag booleano questa condizione potrebbe essere utilizzata logger.isDebugEnabled() – Inv3r53
un modo migliore è utilizzare le direttive di pre-elaborazione. – Orentet
Ci sono vantaggi per entrambi. con il booleano finale statico, il compilatore rimuoverà qualsiasi cosa all'interno dell'istruzione if(), quindi è un po 'come una direttiva preprocessore;) – Kylar