[foreign-memaccess] RFR: Add benchmark to measure performance of VH adapters

Jorn Vernee jvernee at openjdk.java.net
Mon May 18 13:57:25 UTC 2020


On Mon, 18 May 2020 13:09:53 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

> This patch adds a straightforward benchmark to measure performances of var handle adapters.
> 
> The benchmark is set up to read values from an int array, both with a var handle(obtained from `MethodHandles`), an
> associated `MethodHandle` (derived from the first var handle) and with a segment-based, memory access var handle.
> Then the same test is repeated, but with an extra adaptation step inserted in the middle - rather than reading `int`
> values directly, the adapter turns `ints` into instances of `IntBox` and the loop code doing the sum converts them back
> into ints.
> Numbers are extremeluy solid on my machine:
> 
> TestAdaptVarHandles.mh_box_loop       avgt   30  0.306 ? 0.009  ms/op
> TestAdaptVarHandles.mh_loop           avgt   30  0.297 ? 0.009  ms/op
> TestAdaptVarHandles.segment_box_loop  avgt   30  0.308 ? 0.009  ms/op
> TestAdaptVarHandles.segment_loop      avgt   30  0.307 ? 0.008  ms/op
> TestAdaptVarHandles.vh_box_loop       avgt   30  0.296 ? 0.005  ms/op
> TestAdaptVarHandles.vh_loop           avgt   30  0.291 ? 0.003  ms/op
> 
> I thought it would have been nice to add this to our benchmark suites since we do not have anything that tests VH
> adaptation directly.

With the adapter creating IntBox, this benchmark is also testing whether C2 can eliminate the allocation of the box.

If the goal is to measure an adapted VarHandle against a non-adapted baseline VarHandle, I think it makes sense to have
the adapters be the identity function, since then the _only_ difference is whether an adapter is present or not.

WDYT?

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

PR: https://git.openjdk.java.net/panama-foreign/pull/175


More information about the panama-dev mailing list