[vectorIntrinsics] RFR: (Draft) Perofrmance improvements for polluted cases

Radoslaw Smogura github.com+7535718+rsmogura at openjdk.java.net
Fri Aug 6 18:27:56 UTC 2021


Hi all,

I would like to submit this piece of work, for byte buffers and polluted cases. It resolves some performance issues related to mem barriers when in scope are both on- and off-heap buffer.

This is not the most ideal as I could not connect it with loop unrolling (other PR). However, it's still 3x faster than the normal case.

The approach uses subtype check to switch loop over on / off heap kind, and void true nullable base in byte buffer.

After

Benchmark                                     (size)  Mode  Cnt   Score   Error  Units
ByteBufferVectorAccess.arrayCopy                1024  avgt   30  19.647 ? 0.235  ns/op
ByteBufferVectorAccess.directBuffers            1024  avgt   30  19.384 ? 0.099  ns/op
ByteBufferVectorAccess.heapBuffers              1024  avgt   30  17.020 ? 1.273  ns/op
ByteBufferVectorAccess.heapBuffersNotInlined    1024  avgt   30  17.755 ? 1.814  ns/op
ByteBufferVectorAccess.pollutedBuffers2         1024  avgt   30  46.248 ? 0.685  ns/op
ByteBufferVectorAccess.pollutedBuffers3         1024  avgt   30  92.144 ? 2.336  ns/op
ByteBufferVectorAccess.pollutedBuffers4         1024  avgt   30  92.182 ? 3.180  ns/op
ByteBufferVectorAccess.pollutedBuffers5         1024  avgt   30  94.900 ? 2.619  ns/op


Before

Benchmark                                (size)  Mode  Cnt    Score   Error  Units
ByteBufferVectorAccess.arrayCopy           1024  avgt   30   14.772 ? 0.115  ns/op
ByteBufferVectorAccess.directBuffers       1024  avgt   30   18.967 ? 0.036  ns/op
ByteBufferVectorAccess.heapBuffers         1024  avgt   30   14.783 ? 0.128  ns/op
ByteBufferVectorAccess.pollutedBuffers2    1024  avgt   30  109.559 ? 1.164  ns/op
ByteBufferVectorAccess.pollutedBuffers3    1024  avgt   30  219.787 ? 2.055  ns/op
ByteBufferVectorAccess.pollutedBuffers4    1024  avgt   30  218.920 ? 2.123  ns/op
ByteBufferVectorAccess.pollutedBuffers5    1024  avgt   30  219.689 ? 1.874  ns/op

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

Commit messages:
 - Perofrmance improvements for polluted cases

Changes: https://git.openjdk.java.net/panama-vector/pull/109/files
 Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=109&range=00
  Stats: 374 lines in 11 files changed: 245 ins; 0 del; 129 mod
  Patch: https://git.openjdk.java.net/panama-vector/pull/109.diff
  Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/109/head:pull/109

PR: https://git.openjdk.java.net/panama-vector/pull/109


More information about the panama-dev mailing list