< prev index next > test/micro/org/openjdk/bench/java/lang/foreign/StrLenTest.java
Print this page
@BenchmarkMode(Mode.AverageTime)
@Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@State(org.openjdk.jmh.annotations.Scope.Thread)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
! @Fork(value = 3, jvmArgsAppend = { "--enable-native-access=ALL-UNNAMED", "--enable-preview" })
public class StrLenTest extends CLayouts {
Arena arena = Arena.ofConfined();
SegmentAllocator segmentAllocator;
@BenchmarkMode(Mode.AverageTime)
@Warmup(iterations = 5, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@Measurement(iterations = 10, time = 500, timeUnit = TimeUnit.MILLISECONDS)
@State(org.openjdk.jmh.annotations.Scope.Thread)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
! @Fork(value = 3, jvmArgsAppend = { "--enable-native-access=ALL-UNNAMED" })
public class StrLenTest extends CLayouts {
Arena arena = Arena.ofConfined();
SegmentAllocator segmentAllocator;
}
@Benchmark
public int panama_strlen() throws Throwable {
try (Arena arena = Arena.ofConfined()) {
! MemorySegment segment = arena.allocateUtf8String(str);
return (int)STRLEN.invokeExact(segment);
}
}
@Benchmark
public int panama_strlen_ring() throws Throwable {
! return (int)STRLEN.invokeExact(arenaAllocator.allocateUtf8String(str));
}
@Benchmark
public int panama_strlen_pool() throws Throwable {
Arena arena = pool.acquire();
! int l = (int) STRLEN.invokeExact(arena.allocateUtf8String(str));
arena.close();
return l;
}
@Benchmark
public int panama_strlen_prefix() throws Throwable {
! return (int)STRLEN.invokeExact(segmentAllocator.allocateUtf8String(str));
}
@Benchmark
public int panama_strlen_unsafe() throws Throwable {
MemorySegment address = makeStringUnsafe(str);
}
@Benchmark
public int panama_strlen() throws Throwable {
try (Arena arena = Arena.ofConfined()) {
! MemorySegment segment = arena.allocateFrom(str);
return (int)STRLEN.invokeExact(segment);
}
}
@Benchmark
public int panama_strlen_ring() throws Throwable {
! return (int)STRLEN.invokeExact(arenaAllocator.allocateFrom(str));
}
@Benchmark
public int panama_strlen_pool() throws Throwable {
Arena arena = pool.acquire();
! int l = (int) STRLEN.invokeExact(arena.allocateFrom(str));
arena.close();
return l;
}
@Benchmark
public int panama_strlen_prefix() throws Throwable {
! return (int)STRLEN.invokeExact(segmentAllocator.allocateFrom(str));
}
@Benchmark
public int panama_strlen_unsafe() throws Throwable {
MemorySegment address = makeStringUnsafe(str);
public MemorySegment allocate(long byteSize, long byteAlignment) {
if (rem < byteSize) {
reset();
}
MemorySegment res = current.allocate(byteSize, byteAlignment);
! long lastOffset = segment.segmentOffset(res) + res.byteSize();
rem = segment.byteSize() - lastOffset;
return res;
}
void reset() {
public MemorySegment allocate(long byteSize, long byteAlignment) {
if (rem < byteSize) {
reset();
}
MemorySegment res = current.allocate(byteSize, byteAlignment);
! long lastOffset = res.address() - segment.address() + res.byteSize();
rem = segment.byteSize() - lastOffset;
return res;
}
void reset() {
< prev index next >