Javac ile hata ayıklama bilgisi oluşturmayı açarsam, sınıf dosyaları% 20-25 daha büyüktür. Java programının çalıştırılmasında herhangi bir performans etkisi var mı? Varsa hangi şartlarda ve kaç tane. Sınıflar yüklenirken, dosyaların büyük olması nedeniyle biraz etkilenmesi beklenir, ancak bu en az düzeyde olmalıdır.Javac hata ayıklaması arasında açık ve kapalı bir performans farkı var mı?
cevap
Herhangi bir dilde, hata ayıklama bilgisi meta bilgisidir. Doğası gereği nesne dosyalarının boyutunu arttırır, böylece yükleme süresini arttırır. Bir hata ayıklayıcısının dışında yürütme sırasında, bu bilgi aslında tamamen göz ardı edilir. JVM spec'da belirtildiği gibi (açıkça belirtilmemiş), hata ayıklama bilgisi baytkod akışı dışında saklanır. Bu, yürütme zamanında sınıf dosyasında bir fark olmadığı anlamına gelir. Yine de emin olmak istiyorsanız, bunu deneyin :-).
Ps. Çoğu zaman hata ayıklama için optimizasyonun kapatılmasında bir değer vardır. 'un performansa etkisi vardır. Hata ayıklamanın kapatılması hiç bir değişiklik yapmamalıdır.
Ancak hata ayıklamayı kapatıp optimizasyonu açtığınızda, derleme zamanında bazı statik optimizasyonlar yaptığından bir fark görmelisiniz. Bu şekilde, hot spot optimize edilmiş kodunuz bile çalışma zamanında daha hızlı olur. Ancak şu ana kadar, tam yığın izlerinin anlamı veya daha fazla kullanıcı performansına sahip olma arasındaki tradeoff, her zaman yığın izlerine oy verdim. Her şeyden önce, kullanıcılar daha hızlı bir makine almak için her yıl 1000 $ harcamaya istekli, ancak problemlerini çözmek için size anlamlı hata mesajları vermek için 15 dakika harcamak istemiyorlar.
Yıllar geçtikten sonra, 15 dakika değerinde, kullanıcının 1000 $ değerinden daha yüksek değerlere değer veriyorum. :)
lütfen unutmayın o JDK1.3 Javac herhangi bir optimizasyon bayrakları, görmezden beri "derleme zamanı optimizasyonu gereksizdir"
Ek Açıklama: http://ant.apache.org/manual/Tasks/javac.html –
Javac hala -O var mı? Son hatırladım -g: yok denildi. –
Doğru. Yükleme süresi etkilenir, ancak yürütme zamanı değildir. – kohlerm
Gerçekten de güneş java derleyicisinin optimize bayrağı yoktur. Optimizasyon esas olarak hotspot çalışma zamanında gerçekleşir. Derleme süresinde optimizasyon yapmak, sıcak noktaların optimize edilmesini engelleyebilir (tam bilgi sadece derleme zamanında kullanılabilir). –