BAEL-3414 (#8177)
* BAEL-3414 * BAEL-3414 -> Add unit tests * BAEL-3414 -> Clean up pom.xml
This commit is contained in:
parent
a66d9c9c73
commit
b68aca1d9d
|
@ -29,6 +29,27 @@
|
|||
<version>${assertj.version}</version>
|
||||
<scope>test</scope>
|
||||
</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>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.collections</groupId>
|
||||
<artifactId>eclipse-collections</artifactId>
|
||||
<version>10.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.collections</groupId>
|
||||
<artifactId>eclipse-collections-api</artifactId>
|
||||
<version>10.0.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -42,6 +63,42 @@
|
|||
<target>${maven.compiler.target.version}</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.2.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<finalName>${uberjar.name}</finalName>
|
||||
<transformers>
|
||||
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
||||
<mainClass>org.openjdk.jmh.Main</mainClass>
|
||||
</transformer>
|
||||
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
|
||||
</transformers>
|
||||
<filters>
|
||||
<filter>
|
||||
<!--
|
||||
Shading signed JARs will fail without this.
|
||||
http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar
|
||||
-->
|
||||
<artifact>*:*</artifact>
|
||||
<excludes>
|
||||
<exclude>META-INF/*.SF</exclude>
|
||||
<exclude>META-INF/*.DSA</exclude>
|
||||
<exclude>META-INF/*.RSA</exclude>
|
||||
</excludes>
|
||||
</filter>
|
||||
</filters>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
@ -50,6 +107,7 @@
|
|||
<maven.compiler.target.version>11</maven.compiler.target.version>
|
||||
<guava.version>27.1-jre</guava.version>
|
||||
<assertj.version>3.11.1</assertj.version>
|
||||
<uberjar.name>benchmarks</uberjar.name>
|
||||
<jmh.version>1.22</jmh.version>
|
||||
</properties>
|
||||
|
||||
</project>
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
package com.baeldung.benchmark;
|
||||
|
||||
import org.eclipse.collections.api.list.MutableList;
|
||||
import org.eclipse.collections.api.list.primitive.IntList;
|
||||
import org.eclipse.collections.api.list.primitive.MutableIntList;
|
||||
import org.eclipse.collections.impl.factory.primitive.IntLists;
|
||||
import org.eclipse.collections.impl.list.mutable.FastList;
|
||||
import org.eclipse.collections.impl.list.mutable.primitive.IntArrayList;
|
||||
import org.openjdk.jmh.annotations.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.PrimitiveIterator;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@State(Scope.Benchmark)
|
||||
@BenchmarkMode(Mode.Throughput)
|
||||
@OutputTimeUnit(TimeUnit.SECONDS)
|
||||
@Fork(2)
|
||||
public class IntegerListFilter {
|
||||
|
||||
private List<Integer> jdkIntList;
|
||||
private MutableList<Integer> ecMutableList;
|
||||
private IntList ecIntList;
|
||||
private ExecutorService executor;
|
||||
|
||||
@Setup
|
||||
public void setup() {
|
||||
PrimitiveIterator.OfInt iterator = new Random(1L).ints(-10000, 10000).iterator();
|
||||
ecMutableList = FastList.newWithNValues(1_000_000, iterator::nextInt);
|
||||
jdkIntList = new ArrayList<>(1_000_000);
|
||||
jdkIntList.addAll(ecMutableList);
|
||||
ecIntList = ecMutableList.collectInt(i -> i, new IntArrayList(1_000_000));
|
||||
executor = Executors.newWorkStealingPool();
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public List<Integer> jdkList() {
|
||||
return jdkIntList.stream().filter(i -> i % 5 == 0).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public MutableList<Integer> ecMutableList() {
|
||||
return ecMutableList.select(i -> i % 5 == 0);
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public List<Integer> jdkListParallel() {
|
||||
return jdkIntList.parallelStream().filter(i -> i % 5 == 0).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public MutableList<Integer> ecMutableListParallel() {
|
||||
return ecMutableList.asParallel(executor, 100_000).select(i -> i % 5 == 0).toList();
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public IntList ecPrimitive() {
|
||||
return this.ecIntList.select(i -> i % 5 == 0);
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public IntList ecPrimitiveParallel() {
|
||||
return this.ecIntList.primitiveParallelStream().filter(i -> i % 5 == 0).collect(IntLists.mutable::empty, MutableIntList::add, MutableIntList::addAll);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
package com.baeldung.benchmark;
|
||||
|
||||
import org.eclipse.collections.api.list.MutableList;
|
||||
import org.eclipse.collections.api.list.primitive.IntList;
|
||||
import org.eclipse.collections.impl.list.mutable.FastList;
|
||||
import org.eclipse.collections.impl.list.mutable.primitive.IntArrayList;
|
||||
import org.openjdk.jmh.annotations.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.PrimitiveIterator;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@State(Scope.Benchmark)
|
||||
@BenchmarkMode(Mode.Throughput)
|
||||
@OutputTimeUnit(TimeUnit.SECONDS)
|
||||
@Fork(2)
|
||||
public class IntegerListSum {
|
||||
|
||||
private List<Integer> jdkIntList;
|
||||
private MutableList<Integer> ecMutableList;
|
||||
private ExecutorService executor;
|
||||
private IntList ecIntList;
|
||||
|
||||
@Setup
|
||||
public void setup() {
|
||||
PrimitiveIterator.OfInt iterator = new Random(1L).ints(-10000, 10000).iterator();
|
||||
ecMutableList = FastList.newWithNValues(1_000_000, iterator::nextInt);
|
||||
jdkIntList = new ArrayList<>(1_000_000);
|
||||
jdkIntList.addAll(ecMutableList);
|
||||
ecIntList = ecMutableList.collectInt(i -> i, new IntArrayList(1_000_000));
|
||||
executor = Executors.newWorkStealingPool();
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public long jdkList() {
|
||||
return jdkIntList.stream().mapToLong(i -> i).sum();
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public long ecMutableList() {
|
||||
return ecMutableList.sumOfInt(i -> i);
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public long jdkListParallel() {
|
||||
return jdkIntList.parallelStream().mapToLong(i -> i).sum();
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public long ecMutableListParallel() {
|
||||
return ecMutableList.asParallel(executor, 100_000).sumOfInt(i -> i);
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public long ecPrimitive() {
|
||||
return this.ecIntList.sum();
|
||||
}
|
||||
|
||||
@Benchmark
|
||||
public long ecPrimitiveParallel() {
|
||||
return this.ecIntList.primitiveParallelStream().sum();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package com.baeldung.benchmark;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
|
||||
public class IntegerListFilterUnitTest {
|
||||
|
||||
private IntegerListFilter integerListFilter;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
integerListFilter = new IntegerListFilter();
|
||||
integerListFilter.setup();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenBenchmarkIsExecute_thenJDKListsMustBeOfSameSize() {
|
||||
assertEquals(integerListFilter.jdkList().size(), integerListFilter.jdkListParallel().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenBenchmarkIsExecute_thenMutableListsMustBeOfSameSize() {
|
||||
assertEquals(integerListFilter.ecMutableList().size(), integerListFilter.ecMutableListParallel().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenBenchmarkIsExecute_thenPrimitiveListsMustBeOfSameSize() {
|
||||
assertEquals(integerListFilter.ecPrimitive().size(), integerListFilter.ecPrimitiveParallel().size());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package com.baeldung.benchmark;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
|
||||
public class IntegerListSumUnitTest {
|
||||
|
||||
private IntegerListSum integerListSum;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
integerListSum = new IntegerListSum();
|
||||
integerListSum.setup();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenBenchmarkIsExecute_thenJDKListsMustHaveSameValue() {
|
||||
assertEquals(integerListSum.jdkList(), integerListSum.jdkListParallel());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenBenchmarkIsExecute_thenMutableListsMustHaveSameValue() {
|
||||
assertEquals(integerListSum.ecMutableList(), integerListSum.ecMutableListParallel());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenBenchmarkIsExecute_thenPrimitiveListsMustHaveSameValue() {
|
||||
assertEquals(integerListSum.ecPrimitive(), integerListSum.ecPrimitiveParallel());
|
||||
}
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
Sample file content
|
Loading…
Reference in New Issue