Rumah > Java > javaTutorial > Perbandingan berasaskan penanda aras bagi fungsi Java

Perbandingan berasaskan penanda aras bagi fungsi Java

王林
Lepaskan: 2024-04-20 14:39:01
asal
1103 orang telah melayarinya

Alat penanda aras JMH boleh digunakan untuk membandingkan prestasi fungsi Java. Menanda aras dua fungsi yang menjumlahkan tatasusunan, didapati bahawa fungsi penstriman Java (sumArray2) adalah lebih baik daripada fungsi gelung asli (sumArray1) kerana ia mengambil kesempatan daripada penyejajaran dan dengan itu menunjukkan prestasi yang lebih baik pada tatasusunan besar.

Perbandingan berasaskan penanda aras bagi fungsi Java

Perbandingan Fungsi Java Berasaskan Penanda Aras

Prestasi ialah pertimbangan utama semasa menulis kod Java. Dengan menanda aras fungsi yang berbeza, kita boleh menentukan fungsi yang berprestasi terbaik dalam senario tertentu.

Penanda aras dengan JMH

Java Microbenchmark Suite (JMH) ialah perpustakaan popular untuk penanda aras di Jawa. Ia menyediakan API yang mudah digunakan untuk membuat penanda aras dan mengukur masa pelaksanaan.

Perbandingan Fungsi Java dalam Tindakan

Mari kita bandingkan dua fungsi yang menjumlahkan elemen pada tatasusunan:

// 方法 1:原生循环
public static int sumArray1(int[] arr) {
    int sum = 0;
    for (int i = 0; i < arr.length; i++) {
        sum += arr[i];
    }
    return sum;
}

// 方法 2:Java 流
public static int sumArray2(int[] arr) {
    return Arrays.stream(arr).sum();
}
Salin selepas log masuk

Menyediakan penanda aras JMH

Menyediakan penanda aras dengan JMH adalah sangat mudah. Berikut ialah contoh kod konfigurasi JMH:

@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public class SumArrayBenchmark {

    @Benchmark
    public int sumArray1() {
        int[] arr = new int[10000];
        // 填充数组
        return sumArray1(arr);
    }

    @Benchmark
    public int sumArray2() {
        int[] arr = new int[10000];
        // 填充数组
        return sumArray2(arr);
    }
}
Salin selepas log masuk

Jalankan penanda aras JMH

Untuk menjalankan penanda aras JMH, gunakan arahan berikut:

mvn clean install
java -jar target/benchmarks.jar
Salin selepas log masuk

Arahan ini akan mencetak hasil penanda aras, menunjukkan masa pelaksanaan setiap fungsi .

Analisis Keputusan

Dalam contoh di atas, fungsi aliran Java sumArray2 的性能优于原生循环函数 sumArray1. Ini kerana aliran Java mengambil kesempatan daripada penyejajaran, dan faedah prestasi lebih ketara terutamanya dengan tatasusunan yang besar.

Kesimpulan

Dengan menanda aras dengan JMH, kita boleh membandingkan prestasi fungsi Java dengan mudah dan menentukan fungsi mana yang paling cekap dalam senario tertentu.

Atas ialah kandungan terperinci Perbandingan berasaskan penanda aras bagi fungsi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan