Bruno Roustant created LUCENE-10196:
---------------------------------------

             Summary: Improve IntroSorter with 3-ways partitioning
                 Key: LUCENE-10196
                 URL: https://issues.apache.org/jira/browse/LUCENE-10196
             Project: Lucene - Core
          Issue Type: Improvement
            Reporter: Bruno Roustant


I added a SorterBenchmark to evaluate the performance of the various Sorter 
implementations depending on the strategies defined in BaseSortTestCase 
(random, random-low-cardinality, ascending, descending, etc).

By changing the implementation of the IntroSorter to use a 3-ways partitioning, 
we can gain a significant performance improvement when sorting low-cardinality 
lists, and we additional changes we can also improve the performance for all 
the strategies.

Proposed changes:
- Sort small ranges with insertion sort (instead of binary sort).
- Select the quick sort pivot with medians.
- Partition with the fast Bentley-McIlroy 3-ways partitioning algorithm.
- Replace the tail recursion by a loop.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to