[foreign-memaccess+abi] RFR: Add benchmarks to MemorySegmentVsBits

Per Minborg pminborg at openjdk.org
Mon Jan 2 13:18:03 UTC 2023


On Mon, 2 Jan 2023 10:25:17 GMT, Per Minborg <pminborg at openjdk.org> wrote:

> This PR proposes the addition of some benchmarks, for example using a LonBuffer and a VarHandle.

I've run some benchmarks on Linux and Windows too and in particular, Linux seams to benefit from using `VarHandle` access:


![image](https://user-images.githubusercontent.com/7457876/210236077-749980e9-7aa0-4fcc-b277-5edfb17d513e.png)


Name | Linux x64 | Windows x64
-- | -- | --
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.bitsEquivalent-size1 | 5.92 | 5.41
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.bitsEquivalent-size2 | 8.64 | 7.32
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.bitsEquivalent-size16 | 44.05 | 37.39
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.bitsEquivalent-size64 | 166.01 | 140.83
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.bitsEquivalent-size256 | 659.77 | 560.42
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteVarHandle-size1 | 2.81 | 2.39
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteVarHandle-size2 | 3.35 | 3.12
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteVarHandle-size16 | 6.22 | 6.1
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteVarHandle-size64 | 14.31 | 13
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteVarHandle-size256 | 32.56 | 29.68
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteBuffer-size1 | 5.54 | 4.72
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteBuffer-size2 | 6.45 | 5.68
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteBuffer-size16 | 16.12 | 13
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteBuffer-size64 | 36.29 | 30.83
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.byteBuffer-size256 | 168.99 | 145.69
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.longBuffer-size1 | 3.43 | 3.12
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.longBuffer-size2 | 4.22 | 3.53
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.longBuffer-size16 | 9.29 | 8.04
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.longBuffer-size64 | 25.33 | 21.49
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.longBuffer-size256 | 79.42 | 67.34
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaHeap-size1 | 6.69 | 5.7
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaHeap-size2 | 8.5 | 7.13
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaHeap-size16 | 13.52 | 11.01
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaHeap-size64 | 27.81 | 22.23
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaHeap-size256 | 67.05 | 57.29
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNative-size1 | 6.56 | 5.54
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNative-size2 | 8.78 | 7.4
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNative-size16 | 13.03 | 11.28
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNative-size64 | 27.18 | 21.71
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNative-size256 | 67.61 | 58.96
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNativeUnaligned-size1 | 6.42 | 5.83
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNativeUnaligned-size2 | 8.93 | 7.15
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNativeUnaligned-size16 | 12.99 | 11.01
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNativeUnaligned-size64 | 25.79 | 21.74
openjdk.bench.java.lang.foreign.MemorySegmentVsBits.panamaNativeUnaligned-size256 | 67.79 | 57.54

-------------

PR: https://git.openjdk.org/panama-foreign/pull/762


More information about the panama-dev mailing list