26 import java.lang.foreign.MemorySegment;
27
28 import org.openjdk.jmh.annotations.Benchmark;
29 import org.openjdk.jmh.annotations.BenchmarkMode;
30 import org.openjdk.jmh.annotations.Fork;
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
39 import java.util.concurrent.TimeUnit;
40
41 @BenchmarkMode(Mode.AverageTime)
42 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
43 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
44 @State(org.openjdk.jmh.annotations.Scope.Thread)
45 @OutputTimeUnit(TimeUnit.MILLISECONDS)
46 @Fork(value = 3, jvmArgsAppend = "--enable-preview")
47 public class LoopOverOfAddress extends JavaLayouts {
48
49 static final int ITERATIONS = 1_000_000;
50
51 @Benchmark
52 public long segment_loop_addr() {
53 long res = 0;
54 for (int i = 0; i < ITERATIONS; i++) {
55 res += MemorySegment.ofAddress(i % 100).address();
56 }
57 return res;
58 }
59
60 @Benchmark
61 public long segment_loop_addr_size() {
62 long res = 0;
63 for (int i = 0; i < ITERATIONS; i++) {
64 res += MemorySegment.ofAddress(i)
65 .reinterpret(i % 100).address();
66 }
|
26 import java.lang.foreign.MemorySegment;
27
28 import org.openjdk.jmh.annotations.Benchmark;
29 import org.openjdk.jmh.annotations.BenchmarkMode;
30 import org.openjdk.jmh.annotations.Fork;
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
39 import java.util.concurrent.TimeUnit;
40
41 @BenchmarkMode(Mode.AverageTime)
42 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
43 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
44 @State(org.openjdk.jmh.annotations.Scope.Thread)
45 @OutputTimeUnit(TimeUnit.MILLISECONDS)
46 @Fork(3)
47 public class LoopOverOfAddress extends JavaLayouts {
48
49 static final int ITERATIONS = 1_000_000;
50
51 @Benchmark
52 public long segment_loop_addr() {
53 long res = 0;
54 for (int i = 0; i < ITERATIONS; i++) {
55 res += MemorySegment.ofAddress(i % 100).address();
56 }
57 return res;
58 }
59
60 @Benchmark
61 public long segment_loop_addr_size() {
62 long res = 0;
63 for (int i = 0; i < ITERATIONS; i++) {
64 res += MemorySegment.ofAddress(i)
65 .reinterpret(i % 100).address();
66 }
|