23
24 package org.openjdk.bench.java.lang.foreign;
25
26 import java.lang.foreign.*;
27 import java.lang.foreign.Arena;
28 import java.lang.invoke.VarHandle;
29 import org.openjdk.jmh.annotations.*;
30 import org.openjdk.jmh.runner.Runner;
31 import org.openjdk.jmh.runner.options.Options;
32 import org.openjdk.jmh.runner.options.OptionsBuilder;
33 import sun.misc.Unsafe;
34 import java.util.concurrent.TimeUnit;
35
36 import static java.lang.foreign.ValueLayout.*;
37
38 @BenchmarkMode(Mode.AverageTime)
39 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
40 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
41 @State(org.openjdk.jmh.annotations.Scope.Thread)
42 @OutputTimeUnit(TimeUnit.MICROSECONDS)
43 @Fork(value = 3, jvmArgsAppend = { "--enable-preview", "--enable-native-access=ALL-UNNAMED" })
44 public class UnrolledAccess extends JavaLayouts {
45
46 static final Unsafe U = Utils.unsafe;
47
48 static final VarHandle VH_LONG_UNALIGNED = JAVA_LONG_UNALIGNED.arrayElementVarHandle();
49
50 static final VarHandle VH_LONG = JAVA_LONG.arrayElementVarHandle();
51
52 final static int SIZE = 1024;
53
54 @State(Scope.Benchmark)
55 public static class Data {
56
57 final double[] inputArray;
58 final double[] outputArray;
59 final long inputAddress;
60 final long outputAddress;
61 final MemorySegment inputSegment;
62 final MemorySegment outputSegment;
63
64
65 public Data() {
66 this.inputArray = new double[SIZE];
67 this.outputArray = new double[SIZE];
68 this.inputAddress = U.allocateMemory(8 * SIZE);
69 this.outputAddress = U.allocateMemory(8 * SIZE);
70 this.inputSegment = MemorySegment.ofAddress(inputAddress)
71 .reinterpret(8*SIZE);
|
23
24 package org.openjdk.bench.java.lang.foreign;
25
26 import java.lang.foreign.*;
27 import java.lang.foreign.Arena;
28 import java.lang.invoke.VarHandle;
29 import org.openjdk.jmh.annotations.*;
30 import org.openjdk.jmh.runner.Runner;
31 import org.openjdk.jmh.runner.options.Options;
32 import org.openjdk.jmh.runner.options.OptionsBuilder;
33 import sun.misc.Unsafe;
34 import java.util.concurrent.TimeUnit;
35
36 import static java.lang.foreign.ValueLayout.*;
37
38 @BenchmarkMode(Mode.AverageTime)
39 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
40 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
41 @State(org.openjdk.jmh.annotations.Scope.Thread)
42 @OutputTimeUnit(TimeUnit.MICROSECONDS)
43 @Fork(value = 3, jvmArgsAppend = { "--enable-native-access=ALL-UNNAMED" })
44 public class UnrolledAccess extends JavaLayouts {
45
46 static final Unsafe U = Utils.unsafe;
47
48 final static int SIZE = 1024;
49
50 @State(Scope.Benchmark)
51 public static class Data {
52
53 final double[] inputArray;
54 final double[] outputArray;
55 final long inputAddress;
56 final long outputAddress;
57 final MemorySegment inputSegment;
58 final MemorySegment outputSegment;
59
60
61 public Data() {
62 this.inputArray = new double[SIZE];
63 this.outputArray = new double[SIZE];
64 this.inputAddress = U.allocateMemory(8 * SIZE);
65 this.outputAddress = U.allocateMemory(8 * SIZE);
66 this.inputSegment = MemorySegment.ofAddress(inputAddress)
67 .reinterpret(8*SIZE);
|