Korzystam z Log4J w mojej aplikacji do logowania. Wcześniej używałem połączenia debugowania, takiego jak:
Opcja 1:
logger.debug("some debug text");
ale niektóre linki sugerują, że lepiej isDebugEnabled()
najpierw sprawdzić , na przykład:
Opcja 2:
boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
logger.debug("some debug text");
}
Więc moje pytanie brzmi: „ Czy opcja 2 poprawia wydajność w jakikolwiek sposób? ”.
Ponieważ w każdym przypadku środowisko Log4J ma takie samo sprawdzenie pod kątem debugEnabled. W przypadku opcji 2 może być korzystne, jeśli używamy wielu instrukcji debugowania w pojedynczej metodzie lub klasie, gdzie środowisko nie musi wywoływać isDebugEnabled()
metody wiele razy (przy każdym wywołaniu); w tym przypadku wywołuje isDebugEnabled()
metodę tylko raz, a jeśli Log4J jest skonfigurowany do debugowania poziomu, w rzeczywistości wywołuje isDebugEnabled()
metodę dwukrotnie:
- W przypadku przypisania wartości zmiennej debugEnabled, oraz
- W rzeczywistości wywoływany przez metodę logger.debug ().
Nie sądzę, że jeśli napiszemy wiele logger.debug()
instrukcji w metodzie lub klasie i wywołujemy debug()
metodę zgodnie z opcją 1, to jest to narzut dla frameworka Log4J w porównaniu z opcją 2. Ponieważ isDebugEnabled()
jest to bardzo mała metoda (pod względem kodu), może bądź dobrym kandydatem do inklinacji.