SORU
12 Ocak 2009, PAZARTESİ


Java Yansıma Performans

Bir nesne yansıma kullanmak yerine sınıf oluşturucu herhangi bir önemli performans farklılıkları Neden arama oluşturma?

CEVAP
12 Ocak 2009, PAZARTESİ


- Kesinlikle Evet.Yansıma yoluyla bir sınıf arıyorumbüyüklükdaha pahalı.

Java's documentation on reflection alıntı:

Yansıma dinamik olarak çözümlenir bu tür hattınızda belli Java sanal makinesi iyileştirmeler yapılabilir. Sonuç olarak, yansıtıcı işlemleri yansıtıcı olmayan akranlarına göre daha düşük performans, sık sık performans-hassas uygulamalar olarak adlandırılan kod bölümlerde kaçınılmalıdır.

İşte benim makinede 5 dakika içinde girdim basit bir test, Güneş TOTEM 6u10 çalışan:

public class Main {

public static void main(String[] args) throws Exception
{
    doRegular();
    doReflection();
}

public static void doRegular() throws Exception
{
    long start = System.currentTimeMillis();
    for (int i=0; i<1000000; i  )
    {
        A a = new A();
        a.doSomeThing();
    }
    System.out.println(System.currentTimeMillis() - start);
}

public static void doReflection() throws Exception
{
    long start = System.currentTimeMillis();
    for (int i=0; i<1000000; i  )
    {
        A a = (A) Class.forName("misc.A").newInstance();
        a.doSomeThing();
    }
    System.out.println(System.currentTimeMillis() - start);
}
}

Sonuç: bu

35 // no reflection
465 // using reflection

Akılda araması ayı ve örnekleme birlikte yapılır, ve bazı durumlarda arama uzakta refactored olabilir, ama bu sadece temel bir örnektir.

Eğer sadece örneğini bile, hala bir performans isabet

30 // no reflection
47 // reflection using one lookup, only instantiating

Yine, YMMV.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008
  • pjtoohot

    pjtoohot

    15 NİSAN 2008