Isınma ve Yinelemeler
Kararlı durum performansını ölçün
Isınma ve Yinelemeler, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
Isınma ve Yinelemeler
JMH kararlı durum performansını ölçer: kodunuzun JVM tarafından tamamen optimize edildikten sonra ulaştığı hızı. Bunu yapmak için önce geçici ısınma yinelemeleri, ardından gerçek ölçüm yinelemeleri çalıştırır. Bu derste her ikisinin de ayarlanması ele alınır.
Neden Isınma Yapılmalı
İlk çağrılar yorumlanan kipte çalışır ve yavaştır; JIT yoğun kullanılan yöntemi derledikten sonra çağrılar çok hızlanır. Yavaş başlangıcı sayılarınıza katmak, değerleri olduğundan yüksek gösterir. Isınma yinelemeleri kodu çalıştırır, ancak zamanlamaları dikkate alınmaz.
@Warmup
@Warmup, geçici aşamayı denetler: kaç yineleme yapılacağını ve her birinin ne kadar süreceğini belirler.
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.*;
public class Bench {
@Benchmark
@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
public int work() {
return 7 * 6;
}
}@Measurement
@Measurement, gerçek ve kaydedilen aşamayı denetler. Daha fazla yineleme güven aralığını daraltır, ancak çalıştırmayı uzatır.
import java.util.concurrent.TimeUnit;
import org.openjdk.jmh.annotations.*;
public class Bench {
@Benchmark
@Measurement(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS)
public int work() {
return 7 * 6;
}
}Yinelemeler ve İşlemler
Terimlere dikkat edin. Bir yineleme, zamanlanan bir aralıktır (örneğin bir saniye). JMH bu aralıkların her birinde performans ölçümü yöntemini mümkün olduğunca çok çağırır; her çağrı bir işlemdir. Puan işlem başına raporlanır.
Kaç Isınma Yeterlidir
Yineleme başına çıktıyı izleyin. Ardışık ısınma yinelemeleri değişmeyi bıraktığında JIT kararlı hâle gelmiştir. İlk birkaç ölçüm yinelemesi hâlâ sapma gösteriyorsa daha fazla ısınma ekleyin. Beş ısınma ve on ölçüm yinelemesi yaygın bir başlangıç noktasıdır.
Çatallamalar Daha Fazla Isınma Ekler
Her çatallama yepyeni bir JVM'dir; bu nedenle her çatallama tam ısınmayı tekrarlar. Birden çok çatallama çalıştırmak hem JIT profillerini yalıtır hem de JVM'ler arasındaki değişkenliği gösterir; bu, kararlılığın en dürüst ölçümüdür.
import org.openjdk.jmh.annotations.*;
@Fork(3)
@Warmup(iterations = 5)
@Measurement(iterations = 10)
public class Bench {
@Benchmark
public double sqrt() {
return Math.sqrt(2.0);
}
}Etkinin Gösterilmesi
Bu sıradan Java döngüsü, her toplu işlem için süreleri yazdırır. JIT yöntemi derlerken ilk grupların sonraki gruplardan daha yavaş çalıştığını sıkça görürsünüz; bu tam olarak ısınmanın dikkate almadığı etkidir.
public class Main {
static long busy(int n) {
long s = 0;
for (int i = 0; i < n; i++) s += (long) Math.sqrt(i);
return s;
}
public static void main(String[] args) {
for (int batch = 0; batch < 5; batch++) {
long t = System.nanoTime();
long r = busy(2_000_000);
System.out.println("batch " + batch + ": "
+ (System.nanoTime() - t) / 1000 + " us, r=" + r);
}
}
}Zamana Dayalı ve Sayıya Dayalı
Varsayılan olarak yinelemeler zamana dayalıdır (N saniye boyunca çalışır). batchSize ve tek atımlı kiplerle sabit bir işlem sayısına geçebilirsiniz; ancak zamana dayalı yaklaşım makinenin hızına uyum sağladığı için standarttır.
Aşırı Ayarlamayın
Kararlı duruma ulaşıldıktan sonra çok uzun çalıştırmalar, doğruluğu fazla artırmadan zaman harcar. Yineleme sayılarını en üst düzeye çıkarmak yerine çatallamalar arasında kararlı ve tekrarlanabilir değerler elde etmeyi amaçlayın. Tek bir etkileyici sayıdan daha önemli olan tekrarlanabilirliktir.
Kararlılığı Okuma
JMH, çalıştırma sırasında her yinelemenin puanını yazdırır. Sağlıklı bir performans ölçümünde ısınma yinelemeleri yakınsar ve ölçüm yinelemeleri küçük bir +/- hatayla son puanın çevresinde sıkı biçimde kümelenir.
Kısa Kontrol
Isınma ve yinelemeler konusundaki kavrayışınızı sınayın.
Özet
Kararlı durum performansını ölçmeyi öğrendiniz:
- @Warmup, JIT'nin derleme yapabilmesi için sonuçları dikkate alınmayan yinelemeler çalıştırır.
- @Measurement, kaydedilen yinelemeleri çalıştırır; daha fazla yineleme hata payını daraltır.
- Yineleme, zamanlanan bir aralıktır; içindeki her çağrı bir işlemdir.
- Birden çok @Fork, yeni JVM'lerde ısınmayı tekrarlar ve JVM'ler arası değişkenliği ortaya çıkarır.
- Maksimum çalıştırma süresi yerine tekrarlanabilir ve kararlı puanları hedefleyin.
Sıkça Sorulan Sorular
“Isınma ve Yinelemeler” dersi ücretsiz mi?
Evet — “Isınma ve Yinelemeler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Isınma ve Yinelemeler” dersinde ne öğreneceğim?
Kararlı durum performansını ölçün Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Isınma ve Yinelemeler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- JMH Neden Kullanılır
- Benchmark Yazma
- Isınma ve Yinelemeler
- Ölü Kodun Elenmesinden Kaçınma