< prev index next >

test/micro/org/openjdk/bench/java/lang/foreign/QSort.java

Print this page

 29 import org.openjdk.jmh.annotations.Fork;
 30 import org.openjdk.jmh.annotations.Measurement;
 31 import org.openjdk.jmh.annotations.Mode;
 32 import org.openjdk.jmh.annotations.OutputTimeUnit;
 33 import org.openjdk.jmh.annotations.State;
 34 import org.openjdk.jmh.annotations.Warmup;
 35 
 36 import java.lang.foreign.Arena;
 37 import java.lang.invoke.MethodHandle;
 38 import java.lang.invoke.MethodType;
 39 import java.util.concurrent.TimeUnit;
 40 
 41 import static java.lang.invoke.MethodHandles.lookup;
 42 import static java.lang.foreign.ValueLayout.JAVA_INT;
 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.NANOSECONDS)
 49 @Fork(value = 3, jvmArgsAppend = { "--enable-native-access=ALL-UNNAMED", "--enable-preview" })
 50 public class QSort extends CLayouts {
 51 
 52     static final Linker abi = Linker.nativeLinker();
 53     static final MethodHandle clib_qsort;
 54     static final MemorySegment native_compar;
 55     static final MemorySegment panama_upcall_compar;
 56     static final long jni_upcall_compar;
 57 
 58     static final int[] INPUT = { 5, 3, 2, 7, 8, 12, 1, 7 };
 59     static final MemorySegment INPUT_SEGMENT;
 60 
 61     static MemorySegment qsort_addr = abi.defaultLookup().find("qsort").get();
 62 
 63     static {
 64         MemoryLayout layout = MemoryLayout.sequenceLayout(INPUT.length, JAVA_INT);
 65         INPUT_SEGMENT = Arena.global().allocate(layout);
 66         INPUT_SEGMENT.copyFrom(MemorySegment.ofArray(INPUT));
 67 
 68         System.loadLibrary("QSortJNI");
 69         jni_upcall_compar = JNICB.makeCB("org/openjdk/bench/java/lang/foreign/QSort", "jni_upcall_compar", "(II)I");

 29 import org.openjdk.jmh.annotations.Fork;
 30 import org.openjdk.jmh.annotations.Measurement;
 31 import org.openjdk.jmh.annotations.Mode;
 32 import org.openjdk.jmh.annotations.OutputTimeUnit;
 33 import org.openjdk.jmh.annotations.State;
 34 import org.openjdk.jmh.annotations.Warmup;
 35 
 36 import java.lang.foreign.Arena;
 37 import java.lang.invoke.MethodHandle;
 38 import java.lang.invoke.MethodType;
 39 import java.util.concurrent.TimeUnit;
 40 
 41 import static java.lang.invoke.MethodHandles.lookup;
 42 import static java.lang.foreign.ValueLayout.JAVA_INT;
 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.NANOSECONDS)
 49 @Fork(value = 3, jvmArgsAppend = { "--enable-native-access=ALL-UNNAMED" })
 50 public class QSort extends CLayouts {
 51 
 52     static final Linker abi = Linker.nativeLinker();
 53     static final MethodHandle clib_qsort;
 54     static final MemorySegment native_compar;
 55     static final MemorySegment panama_upcall_compar;
 56     static final long jni_upcall_compar;
 57 
 58     static final int[] INPUT = { 5, 3, 2, 7, 8, 12, 1, 7 };
 59     static final MemorySegment INPUT_SEGMENT;
 60 
 61     static MemorySegment qsort_addr = abi.defaultLookup().find("qsort").get();
 62 
 63     static {
 64         MemoryLayout layout = MemoryLayout.sequenceLayout(INPUT.length, JAVA_INT);
 65         INPUT_SEGMENT = Arena.global().allocate(layout);
 66         INPUT_SEGMENT.copyFrom(MemorySegment.ofArray(INPUT));
 67 
 68         System.loadLibrary("QSortJNI");
 69         jni_upcall_compar = JNICB.makeCB("org/openjdk/bench/java/lang/foreign/QSort", "jni_upcall_compar", "(II)I");
< prev index next >