[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