Mercurial > hg > gc-bench
changeset 32:7b87f91c5db9
root.(local|synchronizers) sweepup: only measure the rootset effects
author | shade |
---|---|
date | Fri, 02 Dec 2016 12:43:28 +0100 |
parents | 048984ee8010 |
children | 2302c92fc1d9 |
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/Synchronizers.java |
diffstat | 3 files changed, 18 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/org/openjdk/gcbench/GCBench.java Thu Dec 01 16:19:09 2016 +0100 +++ b/src/main/java/org/openjdk/gcbench/GCBench.java Fri Dec 02 12:43:28 2016 +0100 @@ -263,7 +263,7 @@ { String groupDescr = "Stresses the application root set. Beefs up the particular part of root set, " + - "and then runs peak allocation tests to see if it affects garbage collection."; + "and then runs peak allocation tests to see if it affects garbage collection. "; tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.roots.Strings.class, "roots.strings", groupDescr + "Allocates and retains a number of interned Strings.", @@ -271,7 +271,7 @@ )); tests.add(new DimensionalTest(baseOpts, org.openjdk.gcbench.roots.Synchronizers.class, - "roots.synchronizers", groupDescr + "Inflates and retains a number of synchronized objects.", + "roots.synchronizers", groupDescr + "Inflates and retains a number of synchronized objects per each thread.", Dimensions.size(Sequence.powersOfTen_Sub(100, 100000)) ));
--- a/src/main/java/org/openjdk/gcbench/roots/Locals.java Thu Dec 01 16:19:09 2016 +0100 +++ b/src/main/java/org/openjdk/gcbench/roots/Locals.java Fri Dec 02 12:43:28 2016 +0100 @@ -13,7 +13,7 @@ @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MICROSECONDS) @Threads(Threads.MAX) -@State(Scope.Benchmark) +@State(Scope.Thread) public class Locals { List<Object> list;
--- a/src/main/java/org/openjdk/gcbench/roots/Synchronizers.java Thu Dec 01 16:19:09 2016 +0100 +++ b/src/main/java/org/openjdk/gcbench/roots/Synchronizers.java Fri Dec 02 12:43:28 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; @@ -9,11 +10,11 @@ @Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS) -@Fork(value = 1, jvmArgsAppend = "-Xss32m") +@Fork(value = 1, jvmArgsAppend = {"-Xss32m"}) @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MILLISECONDS) @Threads(Threads.MAX) -@State(Scope.Benchmark) +@State(Scope.Thread) public class Synchronizers { List<Object> list; @@ -30,11 +31,11 @@ } @Benchmark - public void test(Blackhole bh) throws InterruptedException { - recursiveLock(bh, list, 0); + public void test(Control cnt, Blackhole bh) throws InterruptedException { + recursiveLock(cnt, bh, list, 0); } - private void recursiveLock(Blackhole bh, List<Object> list, int i) { + private void recursiveLock(Control cnt, Blackhole bh, List<Object> list, int i) { if (i < list.size()) { Object o0 = list.get(i + 0); Object o1 = list.get(i + 1); @@ -56,7 +57,7 @@ synchronized (o7) { synchronized (o8) { synchronized (o9) { - recursiveLock(bh, list, i + 10); + recursiveLock(cnt, bh, list, i + 10); } } } @@ -68,9 +69,14 @@ } } } else { - for (int c = 0; c < size; c++) { - bh.consume(list.get(c).hashCode()); - list.set(c, new Object()); + for (Object o : list) { + bh.consume(o.hashCode()); + } + if (cnt.startMeasurement) { + // Do not leave until we are finished + while (!cnt.stopMeasurement) { + bh.consume(new Object()); + } } } }