Mercurial > hg > gc-bench
changeset 60:4c32eb6c67b0
More yield tests.
author | shade |
---|---|
date | Tue, 20 Dec 2016 18:52:31 +0100 |
parents | 5b77fb55a8b6 |
children | 8df264030545 |
files | src/main/java/org/openjdk/gcbench/yield/LinkedListGet.java src/main/java/org/openjdk/gcbench/yield/MonteCarloPI.java |
diffstat | 2 files changed, 76 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/openjdk/gcbench/yield/LinkedListGet.java Tue Dec 20 18:52:31 2016 +0100 @@ -0,0 +1,38 @@ +package org.openjdk.gcbench.yield; + +import org.openjdk.gcbench.tests.UnderPressureTest; +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.LinkedList; +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 LinkedListGet { + + List<Object> list; + + @Param({"100000"}) + int size; + + @Setup + public void setup(Blackhole bh) { + list = new LinkedList<>(); + for (int c = 0; c < size; c++) { + list.add(new Object()); + } + } + + @Benchmark + public Object test() throws InterruptedException { + return list.get(size / 2); + } + +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/org/openjdk/gcbench/yield/MonteCarloPI.java Tue Dec 20 18:52:31 2016 +0100 @@ -0,0 +1,38 @@ +package org.openjdk.gcbench.yield; + +import org.openjdk.gcbench.tests.UnderPressureTest; +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.Random; +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.SECONDS) +@Threads(Threads.MAX) +@State(Scope.Benchmark) +public class MonteCarloPI extends UnderPressureTest { + + @Param({"100000000"}) + int size; + + @Benchmark + public int test() throws InterruptedException { + ThreadLocalRandom r = ThreadLocalRandom.current(); + double inside = 0; + for (int c = 0; c < size; c++) { + double x = r.nextDouble(); + double y = r.nextDouble(); + if (x*x + y*y < 1) { + inside++; + } + } + double pi = 4D * inside / size; + return (int) pi; + } + +} \ No newline at end of file