diff --git a/core-java-modules/core-java-collections-4/pom.xml b/core-java-modules/core-java-collections-4/pom.xml
index daf2588ece..7eb8222211 100644
--- a/core-java-modules/core-java-collections-4/pom.xml
+++ b/core-java-modules/core-java-collections-4/pom.xml
@@ -1,31 +1,31 @@
- 4.0.0
- core-java-collections-4
- 0.1.0-SNAPSHOT
- core-java-collections-4
- jar
-
-
- com.baeldung.core-java-modules
- core-java-modules
- 0.0.1-SNAPSHOT
- ../pom.xml
-
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+ core-java-collections-4
+ 0.1.0-SNAPSHOT
+ core-java-collections-4
+ jar
-
-
- org.assertj
- assertj-core
- ${assertj.version}
- test
-
-
+
+ com.baeldung.core-java-modules
+ core-java-modules
+ 0.0.1-SNAPSHOT
+ ../pom.xml
+
-
- 3.19.0
-
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ 3.19.0
+
\ No newline at end of file
diff --git a/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/toarraycomparison/ToArrayBenchmark.java b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/toarraycomparison/ToArrayBenchmark.java
new file mode 100644
index 0000000000..fe76a9ab3d
--- /dev/null
+++ b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/toarraycomparison/ToArrayBenchmark.java
@@ -0,0 +1,72 @@
+package com.baeldung.collections.toarraycomparison;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.TreeSet;
+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.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;
+
+@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
+@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
+@Fork(value = 3, jvmArgsAppend = { "-XX:+UseParallelGC", "-Xms4g", "-Xmx4g" })
+@BenchmarkMode(Mode.AverageTime)
+@OutputTimeUnit(TimeUnit.NANOSECONDS)
+@State(Scope.Benchmark)
+public class ToArrayBenchmark {
+
+ @Param({ "10", "10000", "10000000" })
+ private int size;
+
+ @Param({ "array-list", "tree-set" })
+ private String type;
+
+ private Collection collection;
+
+ @Setup
+ public void setup() {
+ switch (type) {
+ case "array-list":
+ collection = new ArrayList();
+ break;
+ case "tree-set":
+ collection = new TreeSet();
+ break;
+ default:
+ throw new UnsupportedOperationException();
+ }
+ for (int i = 0; i < size; i++) {
+ collection.add(String.valueOf(i));
+ }
+ }
+
+ @Benchmark
+ public String[] zero_sized() {
+ return collection.toArray(new String[0]);
+ }
+
+ @Benchmark
+ public String[] pre_sized() {
+ return collection.toArray(new String[collection.size()]);
+ }
+
+
+ public static void main(String[] args) {
+ try {
+ org.openjdk.jmh.Main.main(args);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+}