>  기사  >  Java  >  벤치마크 기반 Java 기능 비교

벤치마크 기반 Java 기능 비교

王林
王林원래의
2024-04-20 14:39:011067검색

벤치마킹 도구 JMH를 사용하여 Java 기능의 성능을 비교할 수 있습니다. 배열을 합산하는 두 함수를 벤치마킹한 결과 Java 스트리밍 함수(sumArray2)가 병렬화를 활용하여 대규모 배열에서 더 나은 성능을 발휘하므로 기본 루프 함수(sumArray1)보다 우수한 것으로 나타났습니다.

벤치마크 기반 Java 기능 비교

벤치마크 기반 Java 함수 비교

성능은 Java 코드를 작성할 때 주요 고려 사항입니다. 다양한 기능을 벤치마킹함으로써 특정 시나리오에서 어떤 기능이 가장 잘 수행되는지 확인할 수 있습니다.

JMH를 사용한 벤치마킹

Java Microbenchmark Suite(JMH)는 Java 벤치마킹에 널리 사용되는 라이브러리입니다. 벤치마크를 생성하고 실행 시간을 측정하기 위해 사용하기 쉬운 API를 제공합니다.

Java 함수 비교 실행

배열의 요소를 합산하는 두 가지 함수를 비교해 보겠습니다.

// 方法 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를 사용하여 벤치마크를 설정하는 것은 매우 쉽습니다. 다음은 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 벤치마크 실행

JMH 벤치마크를 실행하려면 다음 명령을 사용하세요.

mvn clean install
java -jar target/benchmarks.jar

이 명령은 벤치마크 결과를 인쇄하여 각 기능의 실행 시간을 보여줍니다. .

결과 분석

위의 예에서는 Java 스트림 함수 sumArray2 的性能优于原生循环函数 sumArray1입니다. 이는 Java 스트림이 병렬화를 활용하고 특히 대규모 배열의 경우 성능 이점이 더욱 두드러지기 때문입니다.

결론

JMH를 벤치마킹하면 Java 함수의 성능을 쉽게 비교하고 특정 시나리오에서 어떤 함수가 가장 효율적인지 결정할 수 있습니다.

위 내용은 벤치마크 기반 Java 기능 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.