31 import org.openjdk.jmh.annotations.OutputTimeUnit;
32 import org.openjdk.jmh.annotations.Setup;
33 import org.openjdk.jmh.annotations.State;
34 import org.openjdk.jmh.annotations.TearDown;
35 import org.openjdk.jmh.annotations.Warmup;
36 import sun.misc.Unsafe;
37
38 import java.lang.foreign.MemorySegment;
39 import java.lang.foreign.Arena;
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")
52 public class LoopOverConstant 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 static final long unsafe_addr = unsafe.allocateMemory(ALLOC_SIZE);
61
62 //setup unsafe address
63
64 static {
65 for (int i = 0; i < ELEM_SIZE; i++) {
66 unsafe.putInt(unsafe_addr + (i * CARRIER_SIZE) , i);
67 }
68 }
69
70 //setup native memory segment
71
|
31 import org.openjdk.jmh.annotations.OutputTimeUnit;
32 import org.openjdk.jmh.annotations.Setup;
33 import org.openjdk.jmh.annotations.State;
34 import org.openjdk.jmh.annotations.TearDown;
35 import org.openjdk.jmh.annotations.Warmup;
36 import sun.misc.Unsafe;
37
38 import java.lang.foreign.MemorySegment;
39 import java.lang.foreign.Arena;
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(3)
52 public class LoopOverConstant 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 static final long unsafe_addr = unsafe.allocateMemory(ALLOC_SIZE);
61
62 //setup unsafe address
63
64 static {
65 for (int i = 0; i < ELEM_SIZE; i++) {
66 unsafe.putInt(unsafe_addr + (i * CARRIER_SIZE) , i);
67 }
68 }
69
70 //setup native memory segment
71
|