RFR: JDK-8266431: Dual-Pivot Quicksort improvements (Radix sort) [v6]
Laurent Bourgès
lbourges at openjdk.java.net
Fri Oct 8 07:16:12 UTC 2021
On Wed, 6 Oct 2021 21:21:29 GMT, iaroslavski <github.com+43264149+iaroslavski at openjdk.org> wrote:
>> Sorting:
>>
>> - adopt radix sort for sequential and parallel sorts on int/long/float/double arrays (almost random and length > 6K)
>> - fix tryMergeRuns() to better handle case when the last run is a single element
>> - minor javadoc and comment changes
>>
>> Testing:
>> - add new data inputs in tests for sorting
>> - add min/max/infinity values to float/double testing
>> - add tests for radix sort
>
> iaroslavski has updated the pull request incrementally with one additional commit since the last revision:
>
> JDK-8266431: Dual-Pivot Quicksort improvements (Radix sort)
>
> Added more comments
I want to give my point of view on the new memory requirements:
- as radix sort is used for length > 4k, more often a temporary buffer will be needed (size = array length), so more often young gen GC passes will happen and maybe full gc if this buffer is really big (half heap?)
- if OOME is encountered when the buffer is allocated, then dpqs is used (in-place no-alloc) so new sorting is more robust than dpqs in jdk17
Sorting tests could be made with verbose gc to ascertain the increased gc work, latency...
-------------
PR: https://git.openjdk.java.net/jdk/pull/3938
More information about the core-libs-dev
mailing list