# HG changeset patch # User shade # Date 1483618358 -3600 # Node ID 4016779f803c92e9bd1ece683242e40f84ea69f0 # Parent 04bf515935c1502a8bbccdf6e5aaace49d330109 A bit more WIP work. diff -r 04bf515935c1 -r 4016779f803c src/main/java/org/openjdk/gcbench/wip/ReadBarriersCountedLoop.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/openjdk/gcbench/wip/ReadBarriersCountedLoop.java Thu Jan 05 13:12:38 2017 +0100 @@ -0,0 +1,41 @@ +package org.openjdk.gcbench.wip; + +import org.openjdk.jmh.annotations.*; + +import java.lang.ref.ReferenceQueue; +import java.lang.ref.WeakReference; +import java.util.concurrent.ThreadLocalRandom; +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(1) +@State(Scope.Benchmark) +public class ReadBarriersCountedLoop { + + @Param({"1", "10", "100", "1000", "10000"}) + int count; + + byte[] x; + + @Setup + public void setup() { + x = new byte[count]; + for (int c = 0; c < count; c++) { + x[c] = 42; + } + } + + @Benchmark + public int test() { + int r = 0; + for (int c = 0; c < count; c++) { + r += x[c]; + } + return r; + } + +} diff -r 04bf515935c1 -r 4016779f803c src/main/java/org/openjdk/gcbench/wip/ReadWriteBarrierMerge.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/openjdk/gcbench/wip/ReadWriteBarrierMerge.java Thu Jan 05 13:12:38 2017 +0100 @@ -0,0 +1,24 @@ +package org.openjdk.gcbench.wip; + +import org.openjdk.jmh.annotations.*; + +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(1) +@State(Scope.Benchmark) +public class ReadWriteBarrierMerge { + + double x; + + @Benchmark + @CompilerControl(CompilerControl.Mode.DONT_INLINE) + public void test() { + x++; + } + +}