JMH
- Java kursu
- Uzman
- Ders 31/46
- 5 dk
JMH ile benchmark ölçmeyi öğrenirsin.
JMH ile mikro kıyaslama
JMH (Java Microbenchmark Harness), küçük kod parçalarını doğru ölçmek için kullanılan çatıdır. Isıtma (warmup) turları ile JIT derlemesini tetikler, ölçüm turları ile sonucu toplar. Böylece yanlış ölçümlerden kaçınılır.
JMH, @Benchmark ile işaretlenmiş metotları ölçer. @State durum taşır, Blackhole ölü kod elenmesini önler. Doğru kıyaslama için ısınma ve yineleme sayıları açıkça verilir.
ısınma ve ölçüm turları
JMH iki aşama çalışır: önce ısınma turları koşar; bu sırada JIT sıcak metotları derler, sonuç sayılmaz. Sonra ölçüm turları koşar ve süreler toplanır. Isınma olmadan ölçüm, soğuk derlemeyi de içine alır ve yanlış çıkar.
@Warmup(iterations=3) ve @Measurement(iterations=5) ile tür sayıları ayarlanır. Sonuç istatistiksel olarak sunulur: ortalama, hata payı.
Uygulama BenchmarkRunner sınıfını yaz
class BenchmarkRunner tanımla; static int iterations = 5; ve static int warmup = 3; alanları, void measure() {} boş metodu olsun. main içinde System.out.println("warmup=" + warmup + " iters=" + iterations); yazdır.
Başlangıç kodu
// BenchmarkRunner sınıfını tanımla: iterations ve warmup alanları, measure metodu
// main: warmup ve iterations değerlerini yazdırÖrnek çözüm
class BenchmarkRunner {
static int iterations = 5;
static int warmup = 3;
void measure() {}
public static void main(String[] args) {
System.out.println("warmup=" + warmup + " iters=" + iterations);
}
}Beklenen çıktı
warmup=3 iters=5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 JMH ne için kullanılır?
- Veri tabanı yönetimi
- Grafik çizimi
- Web sunucusu
- Mikro kıyaslama Doğru cevap
Açıklama: JMH küçük kod parçalarını doğru biçimde ölçer.
2 benchmark ek açıklamasını tamamla
@____
public void measure() {}
@Benchmark
public void measure() {}
Açıklama: @Benchmark ölçülecek metodu işaretler.
3 JMH kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
@Benchmark |
Ölçüm metodu |
@State |
Durum taşıyıcı |
Blackhole |
Ölü kod önler |
@Warmup |
Isınma türü |