0Pricing
Java Academy · Pelajaran

Pemanasan dan Iterasi

Ukur performa kondisi stabil.

Pemanasan dan Iterasi adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Pemanasan dan Iterasi

JMH mengukur kinerja kondisi tunak: kecepatan yang dicapai kode Anda setelah JVM selesai mengoptimalkannya. Untuk itu, JMH menjalankan iterasi pemanasan sementara terlebih dahulu, lalu iterasi pengukuran yang sebenarnya. Pelajaran ini membahas penyetelan keduanya.

Mengapa Perlu Pemanasan

Pemanggilan awal berjalan melalui interpretasi dan berlangsung lambat; setelah JIT mengompilasi metode yang sering dipanggil, pemanggilan menjadi jauh lebih cepat. Memasukkan awal yang lambat ke dalam angka Anda akan membuatnya tampak lebih besar. Iterasi pemanasan menjalankan kode, tetapi waktu pengukurannya dibuang.

@Warmup

@Warmup mengendalikan fase sementara: jumlah iterasi dan durasi setiap iterasi.

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 mengendalikan fase nyata yang dicatat. Lebih banyak iterasi mempersempit interval kepercayaan, tetapi memperlama proses.

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;
    }
}

Iterasi vs Operasi

Berhati-hatilah dengan istilahnya. Iterasi adalah jendela yang waktunya diukur (misalnya satu detik). Di dalam setiap jendela, JMH memanggil metode tolok ukur sebanyak mungkin; setiap pemanggilan adalah sebuah operasi. Skor dilaporkan per operasi.

Berapa Banyak Pemanasan yang Cukup

Amati keluaran per iterasi. Jika beberapa iterasi pemanasan berturut-turut tidak lagi berubah, JIT telah stabil. Jika beberapa iterasi pengukuran pertama masih berubah, tambahkan pemanasan. Lima iterasi pemanasan dan sepuluh iterasi pengukuran merupakan titik awal yang umum.

Percabangan Menambah Pemanasan

Setiap proses percabangan menggunakan JVM yang benar-benar baru, sehingga setiap proses mengulangi seluruh pemanasan. Menjalankan beberapa proses percabangan sekaligus mengisolasi profil JIT dan memberi Anda variasi antar JVM, yang merupakan ukuran stabilitas paling jujur.

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);
    }
}

Menunjukkan Dampaknya

Perulangan Java biasa ini mencetak pengukuran waktu setiap kelompok. Anda sering akan melihat kelompok pertama berjalan lebih lambat daripada kelompok berikutnya saat JIT mengompilasi metode tersebut — tepatnya dampak yang dibuang oleh pemanasan.

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);
        }
    }
}

Berbasis Waktu vs Berbasis Jumlah

Secara bawaan, iterasi bersifat berbasis waktu (berjalan selama N detik). Anda dapat beralih ke jumlah operasi tetap dengan batchSize dan mode eksekusi tunggal, tetapi berbasis waktu adalah cara yang umum karena menyesuaikan diri dengan kecepatan mesin.

Jangan Menyetel Berlebihan

Proses yang sangat lama menghabiskan waktu tanpa banyak meningkatkan akurasi setelah kondisi tunak tercapai. Usahakan angka yang stabil dan dapat diulang di antara proses percabangan, bukan memaksimalkan jumlah iterasi. Keterulangan lebih penting daripada satu angka yang mengesankan.

Membaca Stabilitas

JMH mencetak skor setiap iterasi selama proses berlangsung. Tolok ukur yang baik menunjukkan iterasi pemanasan yang mendekati nilai stabil dan iterasi pengukuran yang mengelompok rapat di sekitar skor akhir dengan galat +/- yang kecil.

Pemeriksaan Singkat

Uji pemahaman Anda tentang pemanasan dan iterasi.

Ringkasan

Anda telah mempelajari cara mengukur kinerja kondisi tunak:

  • @Warmup menjalankan iterasi yang hasilnya dibuang agar JIT dapat mengompilasi.
  • @Measurement menjalankan iterasi yang dicatat; jumlah yang lebih banyak mempersempit batas galat.
  • Iterasi adalah jendela yang waktunya diukur; setiap pemanggilan di dalamnya adalah operasi.
  • Beberapa proses @Fork mengulangi pemanasan dalam JVM baru dan menunjukkan variasi antar-JVM.
  • Usahakan skor yang dapat diulang dan stabil, bukan durasi proses yang maksimal.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pemanasan dan Iterasi” gratis?

Ya — teks lengkap “Pemanasan dan Iterasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pemanasan dan Iterasi”?

Ukur performa kondisi stabil. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Pemanasan dan Iterasi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa JMH
  2. Menulis Benchmark
  3. Pemanasan dan Iterasi
  4. Menghindari Eliminasi Kode Mati
← Kembali ke Java Academy