ホームページ >Java >&#&チュートリアル >Java関数のベンチマークベースの比較
ベンチマーク ツール JMH を使用して、Java 関数のパフォーマンスを比較できます。配列を合計する 2 つの関数をベンチマークしたところ、Java ストリーミング関数 (sumArray2) がネイティブ ループ関数 (sumArray1) よりも優れていることがわかりました。これは、Java ストリーミング関数 (sumArray2) が並列化を利用しており、大規模な配列でのパフォーマンスが優れているためです。
Java コードを作成する場合、パフォーマンスは重要な考慮事項です。さまざまな関数のベンチマークを行うことで、特定のシナリオでどの関数が最も優れたパフォーマンスを発揮するかを判断できます。
Java Microbenchmark Suite (JMH) は、Java のベンチマーク用の人気のあるライブラリです。ベンチマークを作成し、実行時間を測定するための使いやすい API を提供します。
配列上の要素を合計する 2 つの関数を比較してみましょう:
// 方法 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(); }
JMH の使用ベンチマークは非常にシンプルです。 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); } }
JMH ベンチマークを実行するには、次のコマンドを使用します。
mvn clean install java -jar target/benchmarks.jar
このコマンドは、ベンチマーク結果は各関数の実行時間を示します。
上記の例では、Java ストリーム関数 sumArray2
のパフォーマンスがネイティブ ループ関数 sumArray1
よりも優れています。これは、Java ストリームが並列化を利用しており、特に大規模な配列ではパフォーマンスの利点がさらに顕著になるためです。
JMH をベンチマークに使用すると、Java 関数のパフォーマンスを簡単に比較し、特定のシナリオでどの関数が最も効率的であるかを判断できます。
以上がJava関数のベンチマークベースの比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。