Saya menggunakan Log4J dalam aplikasi saya untuk login. Sebelumnya saya menggunakan panggilan debug seperti:
Pilihan 1:
logger.debug("some debug text");
tetapi beberapa tautan menyarankan bahwa lebih baik untuk memeriksa isDebugEnabled()
dulu, seperti:
Pilihan 2:
boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
logger.debug("some debug text");
}
Jadi pertanyaan saya adalah " Apakah opsi 2 meningkatkan kinerja? ".
Karena bagaimanapun kerangka Log4J memiliki pemeriksaan yang sama untuk debugEnabled. Untuk opsi 2 mungkin bermanfaat jika kita menggunakan beberapa pernyataan debug dalam metode atau kelas tunggal, di mana kerangka kerja tidak perlu memanggil isDebugEnabled()
metode beberapa kali (pada setiap panggilan); dalam hal ini ia memanggil isDebugEnabled()
metode hanya sekali, dan jika Log4J dikonfigurasi ke level debug maka sebenarnya ia memanggil isDebugEnabled()
metode dua kali:
- Dalam hal memberikan nilai ke variabel debugEnabled, dan
- Sebenarnya disebut dengan metode logger.debug ().
Saya tidak berpikir bahwa jika kita menulis beberapa logger.debug()
pernyataan dalam metode atau kelas dan memanggil debug()
metode menurut opsi 1 maka itu adalah overhead untuk kerangka kerja Log4J dibandingkan dengan opsi 2. Karena isDebugEnabled()
merupakan metode yang sangat kecil (dalam hal kode), mungkin menjadi kandidat yang baik untuk inlining.