CodeBlanks Logo Icon CodeBlanks

Profiling

JVM profiling ve JMH ile performans ölçümünü öğrenirsin.

Profiling nedir?

Profiling, bir programın hangi bölümünün yavaş olduğunu ölçme işlemidir. Kotlin/JVM'de en yaygın araç JMH (Java Microbenchmark Harness) kütüphanesidir.

JMH, bir metodu @Benchmark ile işaretler ve nanosaniye hassasiyetinde ölçer. Sonuç ns/op (operasyon başına nanosaniye) olarak raporlanır. İyi bir benchmark, ısınma (warmup) iterasyonları ve birden fazla ölçüm içerir. Bu dersteki profileInfo modeli konsepti basit bir örnekle gösterir.

JMH kurulumu

JMH bir Gradle eklentisiyle projeye eklenir. Benchmark metotları @Benchmark ile işaretlenir; @BenchmarkMode ölçüm kipini belirler.

Örnek: @Benchmark fun work(): Int { return 42 }. JMH bu metodu birçok kez çalıştırır, ısınma türündan sonra ölçüme başlar. Sonuçlar CSV veya JSON olarak çıkarılabilir. Yanlış benchmark (ölçüm içinde nesne yaratma) yanıltıcı sonuç verir; bu yüzden benchmark metotları sade tutulur.

Uygulama profileInfo yaz

fun profileInfo(): String tanımla. "JMH" döndürsün. main içinde println(profileInfo()) yaz.

Başlangıç kodu

Main.kt
// profileInfo fonksiyonunu ekle

fun main() {
    // profiling bilgisini yazdır
}

Örnek çözüm

Main.kt
fun profileInfo(): String = "JMH"
fun main() {
    println(profileInfo())
}

Beklenen çıktı

JMH

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 JMH neyi ölçer?

Main.kt
JMH measures small-scale performance.
  • Disk G/Ç
  • Bellek kullanımı
  • Mikro performans Doğru cevap
  • Ağ gecikmesi

Açıklama: JMH metot düzeyinde mikro performans ölçer.

2 @Benchmark satırını tamamla

Soru
@Benchmark fun ____(): Int { return 42 }
Cevap
@Benchmark fun work(): Int { return 42 }

Açıklama: @Benchmark fun work() JMH'nin ölçeceği metottur.

3 JMH parçalarını eşle

Kavram Anlamı
JMH Benchmark kütüphanesi
@Benchmark Metot işareti
@BenchmarkMode Ölçüm kipi
ns/op Nano saniye/operasyon

Uzman bölümündeki tüm dersler