RFR: 8365017: The SegmentBulkOperations::copy method can be improved using overlaps
Per Minborg
pminborg at openjdk.org
Thu Aug 7 10:26:15 UTC 2025
On Thu, 7 Aug 2025 10:05:42 GMT, Per Minborg <pminborg at openjdk.org> wrote:
> This PR proposes to use overlapping memory areas in `SegmentBulkOperations::copy`similar ', similar to what is proposed for `SegmentBulkOperations::fill` in https://github.com/openjdk/jdk/pull/25383.
Copy-overlap
Base
Benchmark (ELEM_SIZE) Mode Cnt Score Error Units
SegmentBulkCopy.nativeSegmentCopyJava 2 avgt 30 3.184 ± 0.060 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 3 avgt 30 3.162 ± 0.046 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 4 avgt 30 3.344 ± 0.072 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 5 avgt 30 3.310 ± 0.055 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 6 avgt 30 3.328 ± 0.076 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 7 avgt 30 3.289 ± 0.086 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 8 avgt 30 4.139 ± 0.067 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 12 avgt 30 4.709 ± 0.095 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 16 avgt 30 4.173 ± 0.086 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 24 avgt 30 4.239 ± 0.046 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 64 avgt 30 4.860 ± 0.091 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 512 avgt 30 14.844 ± 0.326 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 4096 avgt 30 90.611 ± 1.788 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 32768 avgt 30 711.792 ± 13.991 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 262144 avgt 30 7605.349 ± 101.069 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 2097152 avgt 30 63458.190 ± 1754.102 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 16777216 avgt 30 552339.850 ± 20632.233 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 134217728 avgt 30 4780611.167 ± 195940.736 ns/op
Patch
Benchmark (ELEM_SIZE) Mode Cnt Score Error Units
SegmentBulkCopy.nativeSegmentCopyJava 2 avgt 30 2.826 ± 0.018 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 3 avgt 30 2.821 ± 0.015 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 4 avgt 30 2.807 ± 0.010 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 5 avgt 30 2.805 ± 0.008 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 6 avgt 30 2.814 ± 0.020 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 7 avgt 30 2.805 ± 0.007 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 8 avgt 30 2.805 ± 0.006 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 12 avgt 30 2.813 ± 0.023 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 16 avgt 30 4.236 ± 0.039 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 24 avgt 30 4.386 ± 0.038 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 64 avgt 30 4.986 ± 0.018 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 512 avgt 30 15.204 ± 0.200 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 4096 avgt 30 91.607 ± 1.559 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 32768 avgt 30 696.212 ± 2.265 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 262144 avgt 30 7619.412 ± 60.848 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 2097152 avgt 30 62158.186 ± 190.673 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 16777216 avgt 30 544631.293 ± 5023.824 ns/op
SegmentBulkCopy.nativeSegmentCopyJava 134217728 avgt 30 4524477.559 ± 71723.200 ns/op
-------------
PR Comment: https://git.openjdk.org/jdk/pull/26672#issuecomment-3163484185
More information about the core-libs-dev
mailing list