blob: 10d923a1b5e591aa8f78e7bd8dec72b24391a519 [file] [view]
# Java 25 Direct Memory Access Benchmark
This diagnostic JMH module compares direct-buffer scalar access paths used to reason about
`MemoryBuffer` on JDK 25:
- `MemorySegment.get/set` with native-order unaligned layouts.
- `MethodHandles.byteBufferViewVarHandle` over a direct `ByteBuffer`.
Each benchmark invocation performs one absolute scalar access at a rolling aligned offset. This is
closer to generated serializer calls into `MemoryBuffer.writeInt32`, `_unsafePutInt64`, and matching
read paths than a bulk array-copy benchmark, while keeping the JDK25 benchmark module free of
`jdk.unsupported` APIs.
Build and run with JDK 25:
```bash
cd benchmarks/java25
mvn package
java -jar target/java25-memory-access-benchmarks.jar \
'org.apache.fory.benchmark.java25.DirectMemoryAccessBenchmark.*' \
-f 1 -wi 5 -i 5 -t 1 -w 1s -r 1s
```
Run the direct-to-heap copy benchmark:
```bash
java -jar target/java25-memory-access-benchmarks.jar \
'org.apache.fory.benchmark.java25.DirectToHeapCopyBenchmark.*' \
-f 1 -wi 5 -i 5 -t 1 -w 1s -r 1s
```