35 import org.openjdk.jmh.annotations.Setup;
36 import org.openjdk.jmh.annotations.State;
37 import org.openjdk.jmh.annotations.TearDown;
38 import org.openjdk.jmh.annotations.Warmup;
39
40 import java.util.LinkedList;
41 import java.util.List;
42 import java.util.Optional;
43 import java.util.Spliterator;
44 import java.util.concurrent.CountedCompleter;
45 import java.util.concurrent.RecursiveTask;
46 import java.util.concurrent.TimeUnit;
47 import java.util.function.Predicate;
48 import java.util.function.ToIntFunction;
49
50 @BenchmarkMode(Mode.AverageTime)
51 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
52 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
53 @State(org.openjdk.jmh.annotations.Scope.Thread)
54 @OutputTimeUnit(TimeUnit.MILLISECONDS)
55 @Fork(value = 3, jvmArgsAppend = "--enable-preview")
56 public class ParallelSum extends JavaLayouts {
57
58 final static int CARRIER_SIZE = 4;
59 final static int ALLOC_SIZE = CARRIER_SIZE * 1024 * 1024 * 256;
60 final static int ELEM_SIZE = ALLOC_SIZE / CARRIER_SIZE;
61
62 final static MemoryLayout ELEM_LAYOUT = ValueLayout.JAVA_INT;
63 final static int BULK_FACTOR = 512;
64 final static SequenceLayout ELEM_LAYOUT_BULK = MemoryLayout.sequenceLayout(BULK_FACTOR, ELEM_LAYOUT);
65
66 static final Unsafe unsafe = Utils.unsafe;
67
68 Arena arena;
69 MemorySegment segment;
70 long address;
71
72 @Setup
73 public void setup() {
74 address = unsafe.allocateMemory(ALLOC_SIZE);
75 for (int i = 0; i < ELEM_SIZE; i++) {
|
35 import org.openjdk.jmh.annotations.Setup;
36 import org.openjdk.jmh.annotations.State;
37 import org.openjdk.jmh.annotations.TearDown;
38 import org.openjdk.jmh.annotations.Warmup;
39
40 import java.util.LinkedList;
41 import java.util.List;
42 import java.util.Optional;
43 import java.util.Spliterator;
44 import java.util.concurrent.CountedCompleter;
45 import java.util.concurrent.RecursiveTask;
46 import java.util.concurrent.TimeUnit;
47 import java.util.function.Predicate;
48 import java.util.function.ToIntFunction;
49
50 @BenchmarkMode(Mode.AverageTime)
51 @Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
52 @Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
53 @State(org.openjdk.jmh.annotations.Scope.Thread)
54 @OutputTimeUnit(TimeUnit.MILLISECONDS)
55 @Fork(3)
56 public class ParallelSum extends JavaLayouts {
57
58 final static int CARRIER_SIZE = 4;
59 final static int ALLOC_SIZE = CARRIER_SIZE * 1024 * 1024 * 256;
60 final static int ELEM_SIZE = ALLOC_SIZE / CARRIER_SIZE;
61
62 final static MemoryLayout ELEM_LAYOUT = ValueLayout.JAVA_INT;
63 final static int BULK_FACTOR = 512;
64 final static SequenceLayout ELEM_LAYOUT_BULK = MemoryLayout.sequenceLayout(BULK_FACTOR, ELEM_LAYOUT);
65
66 static final Unsafe unsafe = Utils.unsafe;
67
68 Arena arena;
69 MemorySegment segment;
70 long address;
71
72 @Setup
73 public void setup() {
74 address = unsafe.allocateMemory(ALLOC_SIZE);
75 for (int i = 0; i < ELEM_SIZE; i++) {
|