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.JAVA_DOUBLE;
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 LoopOverNonConstantFP {
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_DOUBLE.byteSize();
58 static final int ALLOC_SIZE = ELEM_SIZE * CARRIER_SIZE;
59
60 Arena arena;
61 MemorySegment segmentIn, segmentOut;
62 long unsafe_addrIn, unsafe_addrOut;
63 ByteBuffer byteBufferIn, byteBufferOut;
64
65 @Setup
66 public void setup() {
67 unsafe_addrIn = unsafe.allocateMemory(ALLOC_SIZE);
68 unsafe_addrOut = unsafe.allocateMemory(ALLOC_SIZE);
69 for (int i = 0; i < ELEM_SIZE; i++) {
70 unsafe.putDouble(unsafe_addrIn + (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.JAVA_DOUBLE;
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 LoopOverNonConstantFP {
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_DOUBLE.byteSize();
58 static final int ALLOC_SIZE = ELEM_SIZE * CARRIER_SIZE;
59
60 Arena arena;
61 MemorySegment segmentIn, segmentOut;
62 long unsafe_addrIn, unsafe_addrOut;
63 ByteBuffer byteBufferIn, byteBufferOut;
64
65 @Setup
66 public void setup() {
67 unsafe_addrIn = unsafe.allocateMemory(ALLOC_SIZE);
68 unsafe_addrOut = unsafe.allocateMemory(ALLOC_SIZE);
69 for (int i = 0; i < ELEM_SIZE; i++) {
70 unsafe.putDouble(unsafe_addrIn + (i * CARRIER_SIZE), i);
71 }
|