diff --git a/core-java-modules/core-java-11/pom.xml b/core-java-modules/core-java-11/pom.xml
index 4d950bdf8d..81917b6397 100644
--- a/core-java-modules/core-java-11/pom.xml
+++ b/core-java-modules/core-java-11/pom.xml
@@ -29,6 +29,27 @@
${assertj.version}
test
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh.version}
+ provided
+
+
+ org.eclipse.collections
+ eclipse-collections
+ 10.0.0
+
+
+ org.eclipse.collections
+ eclipse-collections-api
+ 10.0.0
+
@@ -42,6 +63,42 @@
${maven.compiler.target.version}
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.1
+
+
+ package
+
+ shade
+
+
+ ${uberjar.name}
+
+
+ org.openjdk.jmh.Main
+
+
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+
@@ -50,6 +107,7 @@
11
27.1-jre
3.11.1
+ benchmarks
+ 1.22
-
diff --git a/core-java-modules/core-java-11/src/main/java/com/baeldung/benchmark/IntegerListFilter.java b/core-java-modules/core-java-11/src/main/java/com/baeldung/benchmark/IntegerListFilter.java
new file mode 100644
index 0000000000..5961d2d297
--- /dev/null
+++ b/core-java-modules/core-java-11/src/main/java/com/baeldung/benchmark/IntegerListFilter.java
@@ -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 jdkIntList;
+ private MutableList 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 jdkList() {
+ return jdkIntList.stream().filter(i -> i % 5 == 0).collect(Collectors.toList());
+ }
+
+ @Benchmark
+ public MutableList ecMutableList() {
+ return ecMutableList.select(i -> i % 5 == 0);
+ }
+
+ @Benchmark
+ public List jdkListParallel() {
+ return jdkIntList.parallelStream().filter(i -> i % 5 == 0).collect(Collectors.toList());
+ }
+
+ @Benchmark
+ public MutableList 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);
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-11/src/main/java/com/baeldung/benchmark/IntegerListSum.java b/core-java-modules/core-java-11/src/main/java/com/baeldung/benchmark/IntegerListSum.java
new file mode 100644
index 0000000000..cdb2accc0b
--- /dev/null
+++ b/core-java-modules/core-java-11/src/main/java/com/baeldung/benchmark/IntegerListSum.java
@@ -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 jdkIntList;
+ private MutableList 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();
+ }
+}
\ No newline at end of file
diff --git a/core-java-modules/core-java-11/src/test/java/com/baeldung/benchmark/IntegerListFilterUnitTest.java b/core-java-modules/core-java-11/src/test/java/com/baeldung/benchmark/IntegerListFilterUnitTest.java
new file mode 100644
index 0000000000..bf68ef70e9
--- /dev/null
+++ b/core-java-modules/core-java-11/src/test/java/com/baeldung/benchmark/IntegerListFilterUnitTest.java
@@ -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());
+ }
+}
diff --git a/core-java-modules/core-java-11/src/test/java/com/baeldung/benchmark/IntegerListSumUnitTest.java b/core-java-modules/core-java-11/src/test/java/com/baeldung/benchmark/IntegerListSumUnitTest.java
new file mode 100644
index 0000000000..b375993ffa
--- /dev/null
+++ b/core-java-modules/core-java-11/src/test/java/com/baeldung/benchmark/IntegerListSumUnitTest.java
@@ -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());
+ }
+}
diff --git a/core-java-modules/core-java-11/src/test/resources/sample.txt b/core-java-modules/core-java-11/src/test/resources/sample.txt
new file mode 100644
index 0000000000..64be299017
--- /dev/null
+++ b/core-java-modules/core-java-11/src/test/resources/sample.txt
@@ -0,0 +1 @@
+Sample file content
\ No newline at end of file