diff --git a/build.gradle b/build.gradle index 236bf3f..baf6560 100644 --- a/build.gradle +++ b/build.gradle @@ -7,6 +7,7 @@ buildscript { jcenter() } dependencies { + // run with gradle --no-daemon clean jmh classpath "me.champeau.gradle:jmh-gradle-plugin:0.5.0-rc-2" } } diff --git a/primitiveCollections/src/jmh/java/org/lucares/collections/BenchmarkUnionIntersection.java b/primitiveCollections/src/jmh/java/org/lucares/collections/BenchmarkUnionIntersection.java index 3710dec..1482cfa 100644 --- a/primitiveCollections/src/jmh/java/org/lucares/collections/BenchmarkUnionIntersection.java +++ b/primitiveCollections/src/jmh/java/org/lucares/collections/BenchmarkUnionIntersection.java @@ -8,6 +8,7 @@ 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.Param; import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; @@ -21,6 +22,9 @@ import org.openjdk.jmh.annotations.Warmup; @Fork(1) public class BenchmarkUnionIntersection { + @Param({ "10000", "20000" }) + private int values; + private IntList aSorted = null; private IntList bSorted = null; private IntList cUnsorted = null; @@ -29,7 +33,6 @@ public class BenchmarkUnionIntersection { @Setup public void setup() throws Exception { - final int values = 10_000; aSorted = IntList.of(); IntStream.range(0, values).forEachOrdered(aSorted::add); aSorted.sort(); @@ -67,4 +70,16 @@ public class BenchmarkUnionIntersection { IntList.intersection(aSorted, bSorted); } + + @Benchmark + public void testUnionUnsortedLists() throws Exception { + + IntList.union(cUnsorted, dUnsorted); + } + + @Benchmark + public void testIntersectionUnsortedLists() throws Exception { + + IntList.intersection(cUnsorted, dUnsorted); + } } diff --git a/primitiveCollections/src/jmh/java/org/lucares/collections/BenchmarkUniq.java b/primitiveCollections/src/jmh/java/org/lucares/collections/BenchmarkUniq.java new file mode 100644 index 0000000..3a86049 --- /dev/null +++ b/primitiveCollections/src/jmh/java/org/lucares/collections/BenchmarkUniq.java @@ -0,0 +1,50 @@ +package org.lucares.collections; + +import java.util.concurrent.TimeUnit; +import java.util.stream.IntStream; + +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.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; + +@State(Scope.Benchmark) +@BenchmarkMode(Mode.Throughput) +@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) +@Fork(1) +public class BenchmarkUniq { + private IntList base = null; + private IntList remove = null; + + @Setup + public void setup() throws Exception { + + final int values = 10_000; + base = IntList.of(); + IntStream.range(0, values).forEachOrdered(i -> base.add(i)); + base.sort(); + + remove = IntList.of(); + IntStream.range(0, 50).forEachOrdered(i -> remove.add(i)); + remove.sort(); + } + + @TearDown + public void tearDown() { + base = null; + remove = null; + } + + @Benchmark + public void testUniq() throws Exception { + + // IntList.union(aSorted, bSorted); + } +}