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
- 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.
Değişim statik son alan Java kullanara...
Java'da örneğin kullanarak performans ...
'In String Java kullanmalıyım.eğe...
Java EE / performans kullanıcı kimlik ...
Java dizi yansıma: ısarray vs örneğin...