Heim  >  Artikel  >  Java  >  Benchmarkbasierter Vergleich von Java-Funktionen

Benchmarkbasierter Vergleich von Java-Funktionen

王林
王林Original
2024-04-20 14:39:011012Durchsuche

Mit dem Benchmarking-Tool JMH kann die Leistung von Java-Funktionen verglichen werden. Beim Benchmarking zweier Funktionen, die Arrays summieren, wurde festgestellt, dass die Java-Streaming-Funktion (sumArray2) der nativen Schleifenfunktion (sumArray1) überlegen ist, da sie die Vorteile der Parallelisierung nutzt und daher bei großen Arrays eine bessere Leistung erbringt.

Benchmarkbasierter Vergleich von Java-Funktionen

Benchmark-basierter Java-Funktionsvergleich

Leistung ist ein wichtiger Aspekt beim Schreiben von Java-Code. Durch das Benchmarking verschiedener Funktionen können wir ermitteln, welche Funktion in einem bestimmten Szenario die beste Leistung erbringt.

Benchmarking mit JMH

Java Microbenchmark Suite (JMH) ist eine beliebte Bibliothek für Benchmarking in Java. Es bietet eine benutzerfreundliche API zum Erstellen von Benchmarks und zum Messen der Ausführungszeiten.

Java-Funktionsvergleich in Aktion

Vergleichen wir zwei Funktionen, die Elemente in einem Array summieren:

// 方法 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();
}

Einrichten eines JMH-Benchmarks

Das Einrichten eines Benchmarks mit JMH ist sehr einfach. Hier ist ein Beispiel für den JMH-Konfigurationscode:

@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);
    }
}

Führen Sie den JMH-Benchmark aus

Um den JMH-Benchmark auszuführen, verwenden Sie den folgenden Befehl:

mvn clean install
java -jar target/benchmarks.jar

Dieser Befehl druckt die Ergebnisse des Benchmarks und zeigt die Ausführungszeit jeder Funktion an .

Ergebnisanalyse

Im obigen Beispiel Java-Stream-Funktion sumArray2 的性能优于原生循环函数 sumArray1. Dies liegt daran, dass Java-Streams die Vorteile der Parallelisierung nutzen und die Leistungsvorteile insbesondere bei großen Arrays noch deutlicher sind.

Fazit

Durch Benchmarking mit JMH können wir die Leistung von Java-Funktionen einfach vergleichen und feststellen, welche Funktion in einem bestimmten Szenario am effizientesten ist.

Das obige ist der detaillierte Inhalt vonBenchmarkbasierter Vergleich von Java-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn