# HG changeset patch # User shade # Date 1489611565 -3600 # Node ID e6445972ab3da4fd241bcb220c8626ed798411e8 # Parent 10a7f1362479a668a51f7e400d93aaaa55bd5595 fragger: update to lower payloads. diff -r 10a7f1362479 -r e6445972ab3d src/main/java/org/openjdk/gcbench/fragger/ArrayFragger.java --- 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]; } } diff -r 10a7f1362479 -r e6445972ab3d src/main/java/org/openjdk/gcbench/fragger/LRUFragger.java --- /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 cache; + + @Setup + public void setup() { + cache = new LinkedHashMap(size*4/3, 0.75f, true) { + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() > size; + } + }; + } + + @Benchmark + public void test() { + cache.put(new Object(), new byte[1000]); + } + +} diff -r 10a7f1362479 -r e6445972ab3d src/main/java/org/openjdk/gcbench/fragger/TreeFragger.java --- 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) {