changeset 69:e6445972ab3d

fragger: update to lower payloads.
author shade
date Wed, 15 Mar 2017 21:59:25 +0100
parents 10a7f1362479
children 05f1c96b89a1
files src/main/java/org/openjdk/gcbench/fragger/ArrayFragger.java src/main/java/org/openjdk/gcbench/fragger/LRUFragger.java src/main/java/org/openjdk/gcbench/fragger/TreeFragger.java
diffstat 3 files changed, 52 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/org/openjdk/gcbench/fragger/ArrayFragger.java	Thu Jan 26 15:55:45 2017 +0100
+++ b/src/main/java/org/openjdk/gcbench/fragger/ArrayFragger.java	Wed Mar 15 21:59:25 2017 +0100
@@ -17,7 +17,8 @@
 @State(Scope.Benchmark)
 public class ArrayFragger {
 
-    public static final int PAYLOAD_SIZE = 16384;
+    @Param("16")
+    int payloadSize;
 
     @Param({"1000"})
     long ldsMB;
@@ -41,7 +42,7 @@
             long a2 = AllocProfileSupport.getAllocatedBytes();
             o16 = new Object[16];
             for (int c = 0; c < 16; c++) {
-                o16[c] = new byte[PAYLOAD_SIZE];
+                o16[c] = new byte[payloadSize];
             }
             long a3 = AllocProfileSupport.getAllocatedBytes();
 
@@ -52,7 +53,7 @@
         } else {
             // best guess
             return 4 + // array element
-                    16 + PAYLOAD_SIZE; // object
+                    16 + payloadSize; // object
         }
     }
 
@@ -62,14 +63,14 @@
         count = (int) Math.max(1, ldsMB * 1024 * 1024 / getSizePerCount());
         objects = new Object[count];
         for (int c = 0; c < count; c++) {
-            objects[c] = new byte[PAYLOAD_SIZE];
+            objects[c] = new byte[payloadSize];
         }
     }
 
     @Benchmark
     public void test() {
         bucket.limit();
-        objects[ThreadLocalRandom.current().nextInt(count)] = new byte[PAYLOAD_SIZE];
+        objects[ThreadLocalRandom.current().nextInt(count)] = new byte[payloadSize];
     }
 
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/org/openjdk/gcbench/fragger/LRUFragger.java	Wed Mar 15 21:59:25 2017 +0100
@@ -0,0 +1,39 @@
+package org.openjdk.gcbench.fragger;
+
+import org.openjdk.jmh.annotations.*;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+
+@Warmup(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
+@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)
+@Fork(value = 1)
+@BenchmarkMode(Mode.Throughput)
+@OutputTimeUnit(TimeUnit.SECONDS)
+@Threads(1)
+@State(Scope.Benchmark)
+public class LRUFragger {
+
+    @Param({"1000"})
+    int size;
+
+    Map<Object, Object> cache;
+
+    @Setup
+    public void setup() {
+        cache = new LinkedHashMap<Object, Object>(size*4/3, 0.75f, true) {
+            @Override
+            protected boolean removeEldestEntry(Map.Entry<Object, Object> eldest) {
+                return size() > size;
+            }
+        };
+    }
+
+    @Benchmark
+    public void test() {
+        cache.put(new Object(), new byte[1000]);
+    }
+
+}
--- a/src/main/java/org/openjdk/gcbench/fragger/TreeFragger.java	Thu Jan 26 15:55:45 2017 +0100
+++ b/src/main/java/org/openjdk/gcbench/fragger/TreeFragger.java	Wed Mar 15 21:59:25 2017 +0100
@@ -1,5 +1,6 @@
 package org.openjdk.gcbench.fragger;
 
+import org.openjdk.gcbench.tests.AllocUninit;
 import org.openjdk.gcbench.util.AllocProfileSupport;
 import org.openjdk.gcbench.util.ratelimit.MultiTokenBucket;
 import org.openjdk.jmh.annotations.*;
@@ -16,7 +17,8 @@
 @State(Scope.Benchmark)
 public class TreeFragger {
 
-    public static final int PAYLOAD_SIZE = 16384;
+    @Param("16")
+    int payloadSize;
 
     @Param({"1000"})
     long ldsMB;
@@ -47,7 +49,7 @@
         } else {
             // best guess
             return 24 + // Node
-                    16 + PAYLOAD_SIZE; // payload
+                   16 + payloadSize; // payload
         }
     }
 
@@ -66,12 +68,12 @@
             for (int m = 31 - Integer.numberOfLeadingZeros(addr); m >= 0; m--) {
                 if ((addr & (1 << m)) != 0) {
                     if (cur.left == null) {
-                        cur.left = new Node(new byte[PAYLOAD_SIZE]);
+                        cur.left = new Node(AllocUninit.alloc(payloadSize));
                     }
                     cur = cur.left;
                 } else {
                     if (cur.right == null) {
-                        cur.right = new Node(new byte[PAYLOAD_SIZE]);
+                        cur.right = new Node(AllocUninit.alloc(payloadSize));
                     }
                     cur = cur.right;
                 }
@@ -84,7 +86,7 @@
     @Benchmark
     public void test() {
         bucket.limit();
-        doStore(ThreadLocalRandom.current().nextInt(count), new byte[PAYLOAD_SIZE]);
+        doStore(ThreadLocalRandom.current().nextInt(count), AllocUninit.alloc(payloadSize));
     }
 
     private void doStore(int addr, Object obj) {