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
This commit is contained in:
parent
70aa0ba234
commit
ce26810b4a
@ -19,6 +19,16 @@
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>${commons-lang3.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openjdk.jmh</groupId>
|
||||
<artifactId>jmh-core</artifactId>
|
||||
<version>${jmh.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.openjdk.jmh</groupId>
|
||||
<artifactId>jmh-generator-annprocess</artifactId>
|
||||
<version>${jmh.version}</version>
|
||||
</dependency>
|
||||
<!-- test scoped -->
|
||||
<dependency>
|
||||
@ -37,9 +47,34 @@
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.2.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<finalName>benchmarks</finalName>
|
||||
<transformers>
|
||||
<transformer
|
||||
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
||||
<mainClass>org.openjdk.jmh.Main</mainClass>
|
||||
</transformer>
|
||||
</transformers>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<properties>
|
||||
<jmh.version>1.19</jmh.version>
|
||||
<!-- util -->
|
||||
<commons-lang3.version>3.9</commons-lang3.version>
|
||||
<!-- testing -->
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user