SORU
8 HAZİRAN 2009, PAZARTESİ


Log4j, performansını artırmak, günlük isDebugEnabled denetleniyor mu?

KullanıyorumLog4Jgiriş için uygulamam. Daha önce böyle hata ayıklama Ara kullanıyordum:

Seçenek 1:

logger.debug("some debug text");

ama bazı bağlantılar daha iyi isDebugEnabled() ilk önce, kontrol etmektedir:

Seçenek 2:

boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
    logger.debug("some debug text");
}

Yani benim soru "Seçenek 2 performans herhangi bir şekilde geliştirir mi?".

Herhangi bir durumda çünkü Log4J çerçeve debugEnabled için aynı kontrol edin. Seçenek 2 için bu faydalı olabilir, eğer biz kullanarak birden fazla hata ayıklama açıklamada tek bir yöntem ya da sınıf, çerçeve gerek yok arayın isDebugEnabled() yöntem birden çok kez (her Ara); bu durum aramaları isDebugEnabled() yöntem, yalnızca bir kez, ve eğer Log4J yapılandırılmış için hata ayıklama seviyesi aslında çağırır isDebugEnabled() yöntem iki:

  1. DebugEnabled değişkene değer atanması durumunda, ve
  2. Aslında logger tarafından çağrıldı.() hata ayıklama yöntemi.

Biz bir yöntem ya da sınıf içinde birden fazla logger.debug() açıklama yazmak ve debug() yöntem, seçenek 1'e göre arama eğer seçenek 2 ile karşılaştırıldığında, Log4J çerçeve için yükü olduğunu sanmıyorum. isDebugEnabled() çok küçük bir yöntem (kod açısından) olduğundan, satır içi uygulaması için iyi bir aday olabilir.

CEVAP
8 HAZİRAN 2009, PAZARTESİ


Bu durumda, Seçenek 1 Daha iyi.

Bekçi deyimi (isDebugEnabled() kontrol), çeşitli nesneler toString() yöntem çağırma içeren günlük mesaj potansiyel pahalı hesaplama engellemek ve sonuçları bitiştirmek.

Bu verilen örnek, günlük iletisi bir sabit dize, bu yüzden izin logger atmak gibi verimli olarak kontrol edip logger etkin ve düşürür karmaşıklığı kodu çünkü orada daha az dalları.

Daha iyisi için daha güncel günlük çerçeve nerede günlük ifadeleri al bir biçim belirtimi ve bağımsız değişken listesi için yerine göre logger-ama "tembel," yalnızca kaydedici etkin. Bu yaklaşımı slf4j tarafından alınır.

Daha fazla bilgi ve log4j ile böyle bir şey yapıyor, örneğin my answer to a related question bkz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006
  • kylelandry

    kylelandry

    9 AĞUSTOS 2007
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008