20260120-radix-sort-threshold-test.txt

text/plain

Filename: 20260120-radix-sort-threshold-test.txt
Type: text/plain
Part: 0
Message: Re: tuple radix sort
- num elem is actual size of input array sorted

- measurements are in RDTSC ticks per element sorted

*** means smallest input that radix sort measured equal or faster

select i % 2 as res from generate_series(1,100,1) i order by res offset 1000;
SET
NOTICE:  num elem:  30   qsort: 26.6 radix: 49.3
NOTICE:  num elem:  40   qsort: 29.4 radix: 43.2
NOTICE:  num elem:  50   qsort: 28.3 radix: 37.7
NOTICE:  num elem:  60   qsort: 27.6 radix: 35.1
NOTICE:  num elem:  70   qsort: 27.0 radix: 32.9
NOTICE:  num elem:  80   qsort: 30.0 radix: 30.5 ***
NOTICE:  num elem:  90   qsort: 29.7 radix: 29.9

select i % 4 as res from generate_series(1,100,1) i order by res offset 1000;
NOTICE:  num elem:  30   qsort: 38.1 radix: 54.4
NOTICE:  num elem:  40   qsort: 36.5 radix: 46.3
NOTICE:  num elem:  50   qsort: 37.0 radix: 40.4
NOTICE:  num elem:  60   qsort: 35.6 radix: 37.9
NOTICE:  num elem:  70   qsort: 35.4 radix: 34.8 ***
NOTICE:  num elem:  80   qsort: 36.8 radix: 32.4
NOTICE:  num elem:  90   qsort: 38.3 radix: 30.4

select i % 6 as res from generate_series(1,100,1) i order by res offset 1000;
SET
NOTICE:  num elem:  30   qsort: 48.6 radix: 54.6
NOTICE:  num elem:  40   qsort: 50.6 radix: 46.8 ***
NOTICE:  num elem:  50   qsort: 50.2 radix: 41.9
NOTICE:  num elem:  60   qsort: 43.6 radix: 37.2
NOTICE:  num elem:  70   qsort: 48.6 radix: 36.4
NOTICE:  num elem:  80   qsort: 43.2 radix: 34.3
NOTICE:  num elem:  90   qsort: 45.4 radix: 32.2

select i % 10 as res from generate_series(1,100,1) i order by res offset 1000;
NOTICE:  num elem:  30   qsort: 66.6 radix: 60.6 ***
NOTICE:  num elem:  40   qsort: 66.9 radix: 52.7
NOTICE:  num elem:  50   qsort: 60.4 radix: 45.9
NOTICE:  num elem:  60   qsort: 58.4 radix: 41.8
NOTICE:  num elem:  70   qsort: 63.9 radix: 37.8
NOTICE:  num elem:  80   qsort: 56.8 radix: 37.1
NOTICE:  num elem:  90   qsort: 58.7 radix: 33.5

select (250*random())::int  as res from generate_series(1,100,1) i order by res offset 1000;
SET
NOTICE:  num elem:  30   qsort: 77.9 radix: 79.7
NOTICE:  num elem:  40   qsort: 74.2 radix: 72.2 ***
NOTICE:  num elem:  50   qsort: 88.0 radix: 64.6
NOTICE:  num elem:  60   qsort: 90.7 radix: 64.6
NOTICE:  num elem:  70   qsort: 97.2 radix: 61.2
NOTICE:  num elem:  80   qsort: 96.8 radix: 60.3
NOTICE:  num elem:  90   qsort: 94.6 radix: 63.6

select (64000*random())::int  as res from generate_series(1,100,1) i order by res offset 1000;
NOTICE:  num elem:  30   qsort: 82.6 radix: 83.9
NOTICE:  num elem:  40   qsort: 91.2 radix: 76.9 ***
NOTICE:  num elem:  50   qsort: 86.7 radix: 70.9
NOTICE:  num elem:  60   qsort: 91.4 radix: 75.0
NOTICE:  num elem:  70   qsort: 91.1 radix: 74.5
NOTICE:  num elem:  80   qsort: 96.8 radix: 63.6
NOTICE:  num elem:  90   qsort: 107.9 radix: 61.3

select (1_000_000_000*random())::int  as res from generate_series(1,100,1) i order by res offset 1000;
SET
NOTICE:  num elem:  30   qsort: 76.0 radix: 84.3
NOTICE:  num elem:  40   qsort: 78.7 radix: 74.8 ***
NOTICE:  num elem:  50   qsort: 91.7 radix: 74.6
NOTICE:  num elem:  60   qsort: 92.7 radix: 70.3
NOTICE:  num elem:  70   qsort: 98.2 radix: 68.1
NOTICE:  num elem:  80   qsort: 104.8 radix: 70.5
NOTICE:  num elem:  90   qsort: 111.0 radix: 70.6