Mercurial > hg > gc-bench
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) {