changeset 46:6d332199876c

Basic arraycopy test.
author shade
date Thu, 08 Dec 2016 17:36:31 +0100
parents 9bdd6c03b353
children dada456637b0
files src/main/java/org/openjdk/gcbench/runtime/arraycopy/RefArray.java
diffstat 1 files changed, 106 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/runtime/arraycopy/RefArray.java	Thu Dec 08 17:36:31 2016 +0100
@@ -0,0 +1,106 @@
+package org.openjdk.gcbench.runtime.arraycopy;
+
+import org.openjdk.jmh.annotations.*;
+
+import java.util.Arrays;
+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(1)
+@State(Scope.Thread)
+public class RefArray {
+
+    public static final int SIZE = 64;
+
+    Object[] sourceNulls, sourceObjs;
+
+    @Setup
+    public void setup() {
+        sourceNulls = new Object[SIZE];
+        sourceObjs = new Object[SIZE];
+        for (int c = 0; c < SIZE; c++) {
+            sourceObjs[c] = new Object();
+        }
+    }
+
+    private Object doCopy(Object[] src, int size) {
+        Object[] dst = new Object[size];
+        System.arraycopy(src, 0, dst, 0, size);
+        return dst;
+    }
+
+    @Benchmark
+    public Object nulls_01() {
+        return doCopy(sourceNulls, 1);
+    }
+
+    @Benchmark
+    public Object nulls_02() {
+        return doCopy(sourceNulls, 2);
+    }
+
+    @Benchmark
+    public Object nulls_04() {
+        return doCopy(sourceNulls, 4);
+    }
+
+    @Benchmark
+    public Object nulls_08() {
+        return doCopy(sourceNulls, 8);
+    }
+
+    @Benchmark
+    public Object nulls_16() {
+        return doCopy(sourceNulls, 16);
+    }
+
+    @Benchmark
+    public Object nulls_32() {
+        return doCopy(sourceNulls, 32);
+    }
+
+    @Benchmark
+    public Object nulls_64() {
+        return doCopy(sourceNulls, 64);
+    }
+
+    @Benchmark
+    public Object objs_01() {
+        return doCopy(sourceObjs, 1);
+    }
+
+    @Benchmark
+    public Object objs_02() {
+        return doCopy(sourceObjs, 2);
+    }
+
+    @Benchmark
+    public Object objs_04() {
+        return doCopy(sourceObjs, 4);
+    }
+
+    @Benchmark
+    public Object objs_08() {
+        return doCopy(sourceObjs, 8);
+    }
+
+    @Benchmark
+    public Object objs_16() {
+        return doCopy(sourceObjs, 16);
+    }
+
+    @Benchmark
+    public Object objs_32() {
+        return doCopy(sourceObjs, 32);
+    }
+
+    @Benchmark
+    public Object objs_64() {
+        return doCopy(sourceObjs, 64);
+    }
+
+}