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.
Prestasi ialah pertimbangan utama semasa menulis kod Java. Dengan menanda aras fungsi yang berbeza, kita boleh menentukan fungsi yang berprestasi terbaik dalam senario tertentu.
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.
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(); }
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); } }
Untuk menjalankan penanda aras JMH, gunakan arahan berikut:
mvn clean install java -jar target/benchmarks.jar
Arahan ini akan mencetak hasil penanda aras, menunjukkan masa pelaksanaan setiap fungsi .
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.
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!