changeset 58:d41292cbeb90

Tuneup roots.* tests.
author shade
date Mon, 19 Dec 2016 18:56:24 +0100
parents 1655f5729b5a
children 5b77fb55a8b6
files src/main/java/org/openjdk/gcbench/GCBench.java src/main/java/org/openjdk/gcbench/roots/Locals.java src/main/java/org/openjdk/gcbench/roots/Strings.java
diffstat 3 files changed, 16 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/org/openjdk/gcbench/GCBench.java	Mon Dec 19 18:40:11 2016 +0100
+++ b/src/main/java/org/openjdk/gcbench/GCBench.java	Mon Dec 19 18:56:24 2016 +0100
@@ -308,16 +308,19 @@
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.roots.Strings.class,
                     "roots.strings", groupDescr + "Allocates and retains a number of interned Strings.",
+                    Dimensions.heapSize(Sequence.predefined(HeapSizeManager.MIN_HEAP)),
                     Dimensions.size(Sequence.powersOfTen_Sub(100, 100000))
             ));
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.roots.Synchronizers.class,
                     "roots.synchronizers", groupDescr + "Inflates and retains a number of synchronized objects per each thread.",
+                    Dimensions.heapSize(Sequence.predefined(HeapSizeManager.MIN_HEAP)),
                     Dimensions.size(Sequence.powersOfTen_Sub(100, 100000))
             ));
 
             tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.roots.Locals.class,
                     "roots.locals", groupDescr + "Produces lots of intermediate local variables on thread stacks.",
+                    Dimensions.heapSize(Sequence.predefined(HeapSizeManager.MIN_HEAP)),
                     Dimensions.size(Sequence.powersOfTen_Sub(100, 100000))
             ));
         }
--- a/src/main/java/org/openjdk/gcbench/roots/Locals.java	Mon Dec 19 18:40:11 2016 +0100
+++ b/src/main/java/org/openjdk/gcbench/roots/Locals.java	Mon Dec 19 18:56:24 2016 +0100
@@ -2,6 +2,7 @@
 
 import org.openjdk.jmh.annotations.*;
 import org.openjdk.jmh.infra.Blackhole;
+import org.openjdk.jmh.infra.Control;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -31,12 +32,12 @@
     }
 
     @Benchmark
-    public void test(Blackhole bh) throws InterruptedException {
-        recursiveLocal(bh, list, 10);
+    public void test(Control cnt, Blackhole bh) throws InterruptedException {
+        recursiveLocal(cnt, bh, list, 10);
     }
 
     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
-    private void recursiveLocal(Blackhole bh, List<Object> list, int i) {
+    private void recursiveLocal(Control cnt, Blackhole bh, List<Object> list, int i) {
         bh.consume(new int[64]); // Allocation pressure to trigger GCs.
 
         Object o00, o01, o02, o03, o04, o05, o06, o07, o08, o09;
@@ -52,7 +53,14 @@
             o07 = list.get(i - 7);
             o08 = list.get(i - 8);
             o09 = list.get(i - 9);
-            recursiveLocal(bh, list, i + 1);
+            recursiveLocal(cnt, bh, list, i + 1);
+        } else {
+            if (cnt.startMeasurement) {
+                // Do not leave until we are finished
+                while (!cnt.stopMeasurement) {
+                    bh.consume(new Object());
+                }
+            }
         }
         bh.consume(o00);
         bh.consume(o01);
--- a/src/main/java/org/openjdk/gcbench/roots/Strings.java	Mon Dec 19 18:40:11 2016 +0100
+++ b/src/main/java/org/openjdk/gcbench/roots/Strings.java	Mon Dec 19 18:56:24 2016 +0100
@@ -32,7 +32,7 @@
     @Benchmark
     public Object test() throws InterruptedException {
         // allocation pressure to trigger GCs
-        return new Object();
+        return new byte[64];
     }
 
 }