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.
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.
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.
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(); }
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); } }
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 .
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.
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!