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