벤치마킹 도구 JMH를 사용하여 Java 기능의 성능을 비교할 수 있습니다. 배열을 합산하는 두 함수를 벤치마킹한 결과 Java 스트리밍 함수(sumArray2)가 병렬화를 활용하여 대규모 배열에서 더 나은 성능을 발휘하므로 기본 루프 함수(sumArray1)보다 우수한 것으로 나타났습니다.
성능은 Java 코드를 작성할 때 주요 고려 사항입니다. 다양한 기능을 벤치마킹함으로써 특정 시나리오에서 어떤 기능이 가장 잘 수행되는지 확인할 수 있습니다.
Java Microbenchmark Suite(JMH)는 Java 벤치마킹에 널리 사용되는 라이브러리입니다. 벤치마크를 생성하고 실행 시간을 측정하기 위해 사용하기 쉬운 API를 제공합니다.
배열의 요소를 합산하는 두 가지 함수를 비교해 보겠습니다.
// 方法 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!