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 import sun.misc.Unsafe;
39
40 import java.util.concurrent.TimeUnit;
41
42 import static java.lang.foreign.ValueLayout.*;
43
44 @BenchmarkMode(Mode.AverageTime)
45 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
46 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
47 @State(org.openjdk.jmh.annotations.Scope.Thread)
48 @OutputTimeUnit(TimeUnit.MILLISECONDS)
49 @Fork(value = 3, jvmArgsAppend = "--enable-preview")
50 public class LoopOverPollutedSegments extends JavaLayouts {
51
52 static final int ELEM_SIZE = 1_000_000;
53 static final int CARRIER_SIZE = (int) JAVA_INT.byteSize();
54 static final int ALLOC_SIZE = ELEM_SIZE * CARRIER_SIZE;
55
56 static final Unsafe unsafe = Utils.unsafe;
57
58
59 Arena confinedArena, sharedArena;
60 MemorySegment nativeSegment, nativeSharedSegment, heapSegmentBytes, heapSegmentFloats;
61 byte[] arr;
62 long addr;
63
64 @Setup
65 public void setup() {
66 addr = unsafe.allocateMemory(ALLOC_SIZE);
67 for (int i = 0; i < ELEM_SIZE; i++) {
68 unsafe.putInt(addr + (i * 4), i);
69 }
|
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 import sun.misc.Unsafe;
39
40 import java.util.concurrent.TimeUnit;
41
42 import static java.lang.foreign.ValueLayout.*;
43
44 @BenchmarkMode(Mode.AverageTime)
45 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
46 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
47 @State(org.openjdk.jmh.annotations.Scope.Thread)
48 @OutputTimeUnit(TimeUnit.MILLISECONDS)
49 @Fork(3)
50 public class LoopOverPollutedSegments extends JavaLayouts {
51
52 static final int ELEM_SIZE = 1_000_000;
53 static final int CARRIER_SIZE = (int) JAVA_INT.byteSize();
54 static final int ALLOC_SIZE = ELEM_SIZE * CARRIER_SIZE;
55
56 static final Unsafe unsafe = Utils.unsafe;
57
58
59 Arena confinedArena, sharedArena;
60 MemorySegment nativeSegment, nativeSharedSegment, heapSegmentBytes, heapSegmentFloats;
61 byte[] arr;
62 long addr;
63
64 @Setup
65 public void setup() {
66 addr = unsafe.allocateMemory(ALLOC_SIZE);
67 for (int i = 0; i < ELEM_SIZE; i++) {
68 unsafe.putInt(addr + (i * 4), i);
69 }
|