31 import org.openjdk.jmh.annotations.Measurement;
32 import org.openjdk.jmh.annotations.Mode;
33 import org.openjdk.jmh.annotations.OutputTimeUnit;
34 import org.openjdk.jmh.annotations.Setup;
35 import org.openjdk.jmh.annotations.State;
36 import org.openjdk.jmh.annotations.TearDown;
37 import org.openjdk.jmh.annotations.Warmup;
38 import sun.misc.Unsafe;
39
40 import java.nio.ByteBuffer;
41 import java.nio.ByteOrder;
42 import java.util.concurrent.TimeUnit;
43
44 import static java.lang.foreign.ValueLayout.*;
45
46 @BenchmarkMode(Mode.AverageTime)
47 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
48 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
49 @State(org.openjdk.jmh.annotations.Scope.Thread)
50 @OutputTimeUnit(TimeUnit.MILLISECONDS)
51 @Fork(value = 3, jvmArgsAppend = { "--enable-preview", "--enable-native-access=ALL-UNNAMED" })
52 public class LoopOverNonConstant extends JavaLayouts {
53
54 static final Unsafe unsafe = Utils.unsafe;
55
56 static final int ELEM_SIZE = 1_000_000;
57 static final int CARRIER_SIZE = (int)JAVA_INT.byteSize();
58 static final int ALLOC_SIZE = ELEM_SIZE * CARRIER_SIZE;
59
60 Arena arena;
61 MemorySegment segment;
62 long unsafe_addr;
63
64 ByteBuffer byteBuffer;
65
66 @Setup
67 public void setup() {
68 unsafe_addr = unsafe.allocateMemory(ALLOC_SIZE);
69 for (int i = 0; i < ELEM_SIZE; i++) {
70 unsafe.putInt(unsafe_addr + (i * CARRIER_SIZE) , i);
71 }
|
31 import org.openjdk.jmh.annotations.Measurement;
32 import org.openjdk.jmh.annotations.Mode;
33 import org.openjdk.jmh.annotations.OutputTimeUnit;
34 import org.openjdk.jmh.annotations.Setup;
35 import org.openjdk.jmh.annotations.State;
36 import org.openjdk.jmh.annotations.TearDown;
37 import org.openjdk.jmh.annotations.Warmup;
38 import sun.misc.Unsafe;
39
40 import java.nio.ByteBuffer;
41 import java.nio.ByteOrder;
42 import java.util.concurrent.TimeUnit;
43
44 import static java.lang.foreign.ValueLayout.*;
45
46 @BenchmarkMode(Mode.AverageTime)
47 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
48 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
49 @State(org.openjdk.jmh.annotations.Scope.Thread)
50 @OutputTimeUnit(TimeUnit.MILLISECONDS)
51 @Fork(value = 3, jvmArgsAppend = { "--enable-native-access=ALL-UNNAMED" })
52 public class LoopOverNonConstant extends JavaLayouts {
53
54 static final Unsafe unsafe = Utils.unsafe;
55
56 static final int ELEM_SIZE = 1_000_000;
57 static final int CARRIER_SIZE = (int)JAVA_INT.byteSize();
58 static final int ALLOC_SIZE = ELEM_SIZE * CARRIER_SIZE;
59
60 Arena arena;
61 MemorySegment segment;
62 long unsafe_addr;
63
64 ByteBuffer byteBuffer;
65
66 @Setup
67 public void setup() {
68 unsafe_addr = unsafe.allocateMemory(ALLOC_SIZE);
69 for (int i = 0; i < ELEM_SIZE; i++) {
70 unsafe.putInt(unsafe_addr + (i * CARRIER_SIZE) , i);
71 }
|