# HG changeset patch # User shade # Date 1485259799 -3600 # Node ID 12d486b68158294d14379399e9b8592a78ea5415 # Parent a009ea5f9d2c51eaa0faad1b4339b13a6918069d retain.* tests should have payloads. retain.hashmap test. diff -r a009ea5f9d2c -r 12d486b68158 src/main/java/org/openjdk/gcbench/GCBench.java --- a/src/main/java/org/openjdk/gcbench/GCBench.java Mon Jan 23 11:57:39 2017 +0100 +++ b/src/main/java/org/openjdk/gcbench/GCBench.java Tue Jan 24 13:09:59 2017 +0100 @@ -248,19 +248,26 @@ "can withstand the allocation pressure when there is other potential work to do. "; tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.retain.RefArray.class, - "retain.array", groupDesc + "Retains an empty reference array of given size.", + "retain.array", groupDesc + "Retains a reference array of given size.", Dimensions.heapSize(Sequence.powersOfTwo_WithMax(HeapSizeManager.MIN_HEAP, HeapSizeManager.MAX_HEAP)), Dimensions.size(Sequence.powersOfTen_Sub(100_000, 100_000_000)) )); tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.retain.LinkedLists.class, - "retain.linkedlist", groupDesc + "Retains an empty linked list of given size.", + "retain.linkedlist", groupDesc + "Retains a linked list of given size.", Dimensions.heapSize(Sequence.powersOfTwo_WithMax(HeapSizeManager.MIN_HEAP, HeapSizeManager.MAX_HEAP)), Dimensions.size(Sequence.powersOfTen_Sub(100_000, 100_000_000)) )); tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.retain.Tree.class, - "retain.tree", groupDesc + "Retains an empty tree of given size.", + "retain.tree", groupDesc + "Retains a tree of given size.", + Dimensions.heapSize(Sequence.powersOfTwo_WithMax(HeapSizeManager.MIN_HEAP, HeapSizeManager.MAX_HEAP)), + Dimensions.size(Sequence.powersOfTen_Sub(100_000, 100_000_000)) + )); + + + tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.retain.Tree.class, + "retain.hashmap", groupDesc + "Retains a HashMap of given size.", Dimensions.heapSize(Sequence.powersOfTwo_WithMax(HeapSizeManager.MIN_HEAP, HeapSizeManager.MAX_HEAP)), Dimensions.size(Sequence.powersOfTen_Sub(100_000, 100_000_000)) )); diff -r a009ea5f9d2c -r 12d486b68158 src/main/java/org/openjdk/gcbench/retain/HashMaps.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/openjdk/gcbench/retain/HashMaps.java Tue Jan 24 13:09:59 2017 +0100 @@ -0,0 +1,40 @@ +package org.openjdk.gcbench.retain; + +import org.openjdk.jmh.annotations.*; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.concurrent.TimeUnit; + +@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) +@Fork(1) +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.NANOSECONDS) +@Threads(Threads.MAX) +@State(Scope.Benchmark) +public class HashMaps { + + Object retain; + + @Param({"100000"}) + private int size; + + @Setup + public void setup() { + HashMap map = new HashMap<>(); + for (int c = 0; c < size; c++) { + Object o = new Object(); + map.put(o, o); + } + retain = map; + } + + @Benchmark + public Object test() { + // allocation pressure to trigger GCs + return new Object(); + } + +} diff -r a009ea5f9d2c -r 12d486b68158 src/main/java/org/openjdk/gcbench/retain/LinkedLists.java --- a/src/main/java/org/openjdk/gcbench/retain/LinkedLists.java Mon Jan 23 11:57:39 2017 +0100 +++ b/src/main/java/org/openjdk/gcbench/retain/LinkedLists.java Tue Jan 24 13:09:59 2017 +0100 @@ -36,9 +36,11 @@ } private static class Node { - Node next; + final Node next; + final Object payload; public Node(Node next) { this.next = next; + this.payload = new Object(); } } diff -r a009ea5f9d2c -r 12d486b68158 src/main/java/org/openjdk/gcbench/retain/RefArray.java --- a/src/main/java/org/openjdk/gcbench/retain/RefArray.java Mon Jan 23 11:57:39 2017 +0100 +++ b/src/main/java/org/openjdk/gcbench/retain/RefArray.java Tue Jan 24 13:09:59 2017 +0100 @@ -15,14 +15,18 @@ @State(Scope.Benchmark) public class RefArray { - Object[] retain; + Object retain; @Param({"100000"}) private int size; @Setup public void setup() { - retain = new Object[size]; + Object[] arr = new Object[size]; + for (int c = 0; c < size; c++) { + arr[c] = new Object(); + } + retain = arr; } @Benchmark diff -r a009ea5f9d2c -r 12d486b68158 src/main/java/org/openjdk/gcbench/retain/Tree.java --- a/src/main/java/org/openjdk/gcbench/retain/Tree.java Mon Jan 23 11:57:39 2017 +0100 +++ b/src/main/java/org/openjdk/gcbench/retain/Tree.java Tue Jan 24 13:09:59 2017 +0100 @@ -52,9 +52,11 @@ private static class Node { final Node left; final Node right; + final Object payload; public Node(Node left, Node right) { this.left = left; this.right = right; + this.payload = new Object(); } }