On Thu, 22 May 2025 11:52:34 GMT, Per Minborg <pminb...@openjdk.org> wrote:
>> This PR builds on a concept John Rose told me about some time ago. Instead >> of combining memory operations of various sizes, a single large and skewed >> memory operation can be made to clean up the tail of remaining bytes. >> >> This has the effect of simplifying and shortening the code. The number of >> branches to evaluate is reduced. >> >> It should be noted that the performance of the fill operation affects the >> allocation of new segments (as they are zeroed out before being returned to >> the client code). > > Per Minborg has updated the pull request incrementally with one additional > commit since the last revision: > > Update benchmark to reflect new fill method Updated benchmarks: Base: Benchmark (ELEM_SIZE) Mode Cnt Score Error Units SegmentBulkFill.nativeSegmentFillJava 2 avgt 30 1.618 ± 0.060 ns/op SegmentBulkFill.nativeSegmentFillJava 3 avgt 30 1.602 ± 0.042 ns/op SegmentBulkFill.nativeSegmentFillJava 4 avgt 30 1.775 ± 0.070 ns/op SegmentBulkFill.nativeSegmentFillJava 5 avgt 30 1.759 ± 0.051 ns/op SegmentBulkFill.nativeSegmentFillJava 6 avgt 30 1.771 ± 0.051 ns/op SegmentBulkFill.nativeSegmentFillJava 7 avgt 30 1.785 ± 0.049 ns/op SegmentBulkFill.nativeSegmentFillJava 8 avgt 30 2.383 ± 0.061 ns/op (12 is estimated in the chart below) SegmentBulkFill.nativeSegmentFillJava 64 avgt 30 4.010 ± 0.255 ns/op SegmentBulkFill.nativeSegmentFillJava 512 avgt 30 6.622 ± 0.246 ns/op SegmentBulkFill.nativeSegmentFillJava 4096 avgt 30 44.431 ± 0.832 ns/op SegmentBulkFill.nativeSegmentFillJava 32768 avgt 30 331.429 ± 3.073 ns/op SegmentBulkFill.nativeSegmentFillJava 262144 avgt 30 4174.795 ± 76.096 ns/op SegmentBulkFill.nativeSegmentFillJava 2097152 avgt 30 33084.699 ± 53.530 ns/op SegmentBulkFill.nativeSegmentFillJava 16777216 avgt 30 298953.004 ± 11241.262 ns/op SegmentBulkFill.nativeSegmentFillJava 134217728 avgt 30 2857973.939 ± 128453.291 ns/op Patch: Benchmark (ELEM_SIZE) Mode Cnt Score Error Units SegmentBulkFill.nativeSegmentFillJava 2 avgt 30 1.322 ± 0.020 ns/op SegmentBulkFill.nativeSegmentFillJava 3 avgt 30 1.313 ± 0.009 ns/op SegmentBulkFill.nativeSegmentFillJava 4 avgt 30 1.323 ± 0.023 ns/op SegmentBulkFill.nativeSegmentFillJava 5 avgt 30 1.309 ± 0.006 ns/op SegmentBulkFill.nativeSegmentFillJava 6 avgt 30 1.310 ± 0.017 ns/op SegmentBulkFill.nativeSegmentFillJava 7 avgt 30 1.308 ± 0.004 ns/op SegmentBulkFill.nativeSegmentFillJava 8 avgt 30 1.312 ± 0.008 ns/op SegmentBulkFill.nativeSegmentFillJava 12 avgt 30 1.316 ± 0.025 ns/op SegmentBulkFill.nativeSegmentFillJava 64 avgt 30 3.829 ± 0.199 ns/op SegmentBulkFill.nativeSegmentFillJava 512 avgt 30 6.661 ± 0.077 ns/op  ------------- PR Comment: https://git.openjdk.org/jdk/pull/25383#issuecomment-2900966164