SORU
2 ŞUBAT 2009, PAZARTESİ


Nasıl Java micro-kıyaslama doğru yazmanın ne anlamı var?

Nasıl (ve çalışma) Java micro-temel bir doğru yazıyorsun?

Burada kod örnekleri ve açıklamaları hakkında düşünmek için çeşitli şeyler anlatabilmek için arıyorum.

Örnek: kıyaslama ölçüsü kez yineleme ya da yineleme zaman ve neden Gerekir?

İlgili: Is stopwatch benchmarking acceptable?

CEVAP
4 ŞUBAT 2009, ÇARŞAMBA


Mikro kriterler yazma hakkında ipuçları from the creators of Java HotSpot:

Kural 0:Jvm'ler üzerinde saygın bir kağıt okuma ve mikro kıyaslama. İyi biridir Brian Goetz, 2005. Mikro-kriterler çok fazla beklemeyin; onlar JVM performans özellikleri yalnızca sınırlı bir dizi tedbir.

Kural 1:Her zaman test çekirdek çalışan bir ısınma aşaması ile, faz zamanlama önce tüm başlatmaları ve derlemeler tetiklemek için yeterli(ler) vardır. (Daha az yineleme ısınma aşaması TAMAM. Başparmak kuralı iç döngü tekrar binlerce birkaç on.)

Kural 2:-XX: PrintCompilation, -verbose:gc, vb. ile her zaman çalıştırın JVM derleyici ve diğer parçaları zamanlama aşamasında beklenmeyen bir işi olmadığını doğrulayabilirsiniz.

Kural 2.1:Baskı zamanlama ve ısınma evreleri başında ve sonunda mesajları, zamanlama aşamasında Kural 2 çıkış yok doğrulayabilir.

Kural 3:-İstemci -sunucu ve OSR ve düzenli derleme arasındaki fark. Olmayan ilk giriş noktasını göstermek için-işareti ile OSR koleksiyon, örneğin -XX: PrintCompilation bayrak raporlar: Trouble$1::run @ 2 (41 bytes). Eğer en iyi performans sonrasında ise istemci için sunucu ve OSR için düzenli tercih ederim.

Kural 4:Başlatma etkileri farkında olun. Baskı yükler ve başlatır sınıfları beri zamanlama aşamasında ilk kez baskı yapın. Özellikle sınıf yükleme testi olmadıkça ısınma aşamasında (ya da nihai rapor aşamasında) dışında yeni sınıflar yüklemeyin, (ve sadece test bu durumda yük sınıfları). Kural 2 gibi etkilere karşı ilk savunma hattıdır.

Kural 5:Deoptimization derleme etkileri farkında olun. Hayır herhangi bir kod yolu ilk kez zamanlama faz, çünkü derleyici olabilir önemsiz ve yeniden derleyin kodu, temelli bir önceki iyimser varsayımına yol gitmiyor kullanılacak. Kural 2 gibi etkilere karşı ilk savunma hattıdır.

Kural 6:Derleyici düşüncelerini okumak için uygun araçları kullanın ve ürettiği kod ile sürpriz olmasını bekliyoruz. Kodu kendinize bir şey daha hızlı veya daha yavaş yapar ne hakkında teorileri kurmadan önce kontrol edin.

Kural 7:Senin ölçümleri gürültü azaltın. Sessiz bir makine üzerinde kriter çalıştırın ve birkaç kez atarak sapan çalıştırın. -Xbatch uygulama ile derleyici seri hale getirmek ve -XX:CICompilerCount=1 kendisi ile paralel çalışmasını derleyici önlemek için ayarlama düşünün için kullanın.

Kural 8:Muhtemelen daha verimli ve zaten bu tek amaç için hata ayıklaması gibi referansınız için bir kütüphane kullanın. JMH, Caliper Bill and Paul's Excellent UCSD Benchmarks for Java gibi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmperorTigerstar

    EmperorTiger

    14 EYLÜL 2009
  • SVB International

    SVB Internat

    29 EKİM 2011
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009