From ce26810b4abfc4456ba698714d63c38188a6d446 Mon Sep 17 00:00:00 2001
From: rohitchaudhary2023
<57285851+rohitchaudhary2023@users.noreply.github.com>
Date: Wed, 1 Jan 2020 02:52:53 +0530
Subject: [PATCH] BAEL-3380 (#8454)
* initial commit
* changes for articlesBAEL-3380
* Removed evaluation article files
* BAEL-3380
* adding test case BAEL-3380
* BAEL-3380
* BAEL-3380 - updated tests and removed main class
* BAEL-3380 - Updated Test class name
* BAEL-3380 - Updated Test class name
* BAEL-3380 - Updated testcase names as per BDD naming convention
* BAEL 3380 - Added JMH benchmark
---
core-java-modules/core-java-arrays-2/pom.xml | 35 +++++++++
.../arraysort/ArraySortingBenchmark.java | 72 +++++++++++++++++++
2 files changed, 107 insertions(+)
create mode 100644 core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/arraysort/ArraySortingBenchmark.java
diff --git a/core-java-modules/core-java-arrays-2/pom.xml b/core-java-modules/core-java-arrays-2/pom.xml
index 3f6b7094bb..532f0a6144 100644
--- a/core-java-modules/core-java-arrays-2/pom.xml
+++ b/core-java-modules/core-java-arrays-2/pom.xml
@@ -19,6 +19,16 @@
org.apache.commons
commons-lang3
${commons-lang3.version}
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
@@ -37,9 +47,34 @@
true
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.0
+
+
+ package
+
+ shade
+
+
+ benchmarks
+
+
+ org.openjdk.jmh.Main
+
+
+
+
+
+
+
+ 1.19
3.9
diff --git a/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/arraysort/ArraySortingBenchmark.java b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/arraysort/ArraySortingBenchmark.java
new file mode 100644
index 0000000000..640d729020
--- /dev/null
+++ b/core-java-modules/core-java-arrays-2/src/main/java/com/baeldung/arraysort/ArraySortingBenchmark.java
@@ -0,0 +1,72 @@
+package com.baeldung.arraysort;
+
+import java.util.Arrays;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Param;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.infra.Blackhole;
+
+@BenchmarkMode(Mode.AverageTime)
+@Warmup(iterations = 5)
+@Measurement(iterations = 10)
+@Fork(2)
+@OutputTimeUnit(TimeUnit.MILLISECONDS)
+public class ArraySortingBenchmark {
+
+ @State(Scope.Benchmark)
+ public static class ArrayContainer {
+
+ @Param({ "1000", "10000", "100000", "1000000" })
+ int arraySize;
+
+ // initial unsorted array
+ int[] unsortedArray;
+
+ //cloned array to sort
+ int[] arrayToSort;
+
+ @Setup(Level.Trial)
+ public void createUnSortedArray() {
+ unsortedArray = new int[arraySize];
+ for (int i = 0; i < arraySize; i++) {
+ unsortedArray[i] = new Random().nextInt(1000);
+ }
+ }
+
+ @Setup(Level.Invocation)
+ public void createUnSortedArrayCopy() {
+ arrayToSort = unsortedArray.clone();
+ }
+
+ int[] getArrayToSort() {
+ return arrayToSort;
+ }
+ }
+
+ @Benchmark
+ public void benchmark_arrays_parallel_sort(ArrayContainer d, Blackhole b) {
+ int[] arr = d.getArrayToSort();
+ Arrays.parallelSort(arr);
+ b.consume(arr);
+ }
+
+ @Benchmark
+ public void benchmark_arrays_sort(ArrayContainer d, Blackhole b) {
+ int[] arr = d.getArrayToSort();
+ Arrays.sort(arr);
+ b.consume(arr);
+ }
+
+}