Java関数のベンチマークベースの比較

王林
リリース: 2024-04-20 14:39:01
オリジナル
1074 人が閲覧しました

ベンチマーク ツール JMH を使用して、Java 関数のパフォーマンスを比較できます。配列を合計する 2 つの関数をベンチマークしたところ、Java ストリーミング関数 (sumArray2) がネイティブ ループ関数 (sumArray1) よりも優れていることがわかりました。これは、Java ストリーミング関数 (sumArray2) が並列化を利用しており、大規模な配列でのパフォーマンスが優れているためです。

Java関数のベンチマークベースの比較

ベンチマークベースの Java 関数の比較

Java コードを作成する場合、パフォーマンスは重要な考慮事項です。さまざまな関数のベンチマークを行うことで、特定のシナリオでどの関数が最も優れたパフォーマンスを発揮するかを判断できます。

JMH によるベンチマーク

Java Microbenchmark Suite (JMH) は、Java のベンチマーク用の人気のあるライブラリです。ベンチマークを作成し、実行時間を測定するための使いやすい API を提供します。

実際の Java 関数の比較

配列上の要素を合計する 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 の使用ベンチマークは非常にシンプルです。 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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート