Re: RFR: 8266431: Dual-Pivot Quicksort improvements (Radix sort) [v11]

2024-06-19 Thread Vladimir Yaroslavskiy
On Fri, 10 May 2024 22:08:47 GMT, Srinivas Vamsi Parasa  
wrote:

>> Hello Vamsi (@vamsi-parasa),
>> 
>> Could you please run the new benchmarking to finalize the best version?
>> What you need is to compile and run JavaBenchmarkHarness:
>> 
>> javac --patch-module java.base=. -d classes *.java
>> java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
>> java.base=classes -cp classes java.util.JavaBenchmarkHarness
>> 
>> Find the sources there:
>> 
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_11.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_11a.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_12.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_12a.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/JavaBenchmarkHarness.java
>> 
>> Thank you,
>> Vladimir
>
> Hi Vladimir (@iaroslavski),
> 
> Please see the data below.
> 
> Thanks,
> Vamsi
> 
> 
> name | builder | size | mode | count | score
> -- | -- | -- | -- | -- | --
> b01 | RANDOM | 600 | avg | 325677 | 6.861
> b01 | RANDOM | 3000 | avg | 52041 | 77.313
> b01 | RANDOM | 9 | avg | 1217 | 4315.41
> b01 | RANDOM | 40 | avg | 242 | 22110.95
> b01 | RANDOM | 100 | avg | 90 | 58613.45
> b01 | REPEATED | 600 | avg | 651354 | 1.993
> b01 | REPEATED | 3000 | avg | 104083 | 13.026
> b01 | REPEATED | 9 | avg | 2435 | 741.97
> b01 | REPEATED | 40 | avg | 484 | 3161.073
> b01 | REPEATED | 100 | avg | 180 | 8363.671
> b01 | STAGGER | 600 | avg | 1954062 | 9.124
> b01 | STAGGER | 3000 | avg | 312251 | 10.026
> b01 | STAGGER | 9 | avg | 7305 | 286.313
> b01 | STAGGER | 40 | avg | 1453 | 1278.758
> b01 | STAGGER | 100 | avg | 542 | 3242.849
> b01 | SHUFFLE | 600 | avg | 325677 | 5.113
> b01 | SHUFFLE | 3000 | avg | 52041 | 28.85
> b01 | SHUFFLE | 9 | avg | 1217 | 1368.91
> b01 | SHUFFLE | 40 | avg | 242 | 5718.052
> b01 | SHUFFLE | 100 | avg | 90 | 15376.1
> r31_11 | RANDOM | 600 | avg | 325677 | 4.305
> r31_11 | RANDOM | 3000 | avg | 52041 | 73.399
> r31_11 | RANDOM | 9 | avg | 1217 | 3963.515
> r31_11 | RANDOM | 40 | avg | 242 | 19841.07
> r31_11 | RANDOM | 100 | avg | 90 | 53372.63
> r31_11 | REPEATED | 600 | avg | 651354 | 1.208
> r31_11 | REPEATED | 3000 | avg | 104083 | 6.206
> r31_11 | REPEATED | 9 | avg | 2435 | 614.159
> r31_11 | REPEATED | 40 | avg | 484 | 2615.923
> r31_11 | REPEATED | 100 | avg | 180 | 6553.801
> r31_11 | STAGGER | 600 | avg | 1954062 | 1.023
> r31_11 | STAGGER | 3000 | avg | 312251 | 4.406
> r31_11 | STAGGER | 9 | avg | 7305 | 129.76
> r31_11 | STAGGER | 40 | avg | 1453 | 600.581
> r31_11 | STAGGER | 100 | avg | 542 | 1588.827
> r31_11 | SHUFFLE | 600 | avg | 325677 | 2.887
> r31_11 | SHUFFLE | 3000 | avg | 52041 | 17.901
> r31_11 | SHUFFLE | 9 | avg | 1217 | 1033.808
> r31_11 | SHUFFLE | 40 | avg | 242 | 4686.188
> r31_11 | SHUFFLE | 100 | avg | 90 | 11589.67
> r31_11a | RANDOM | 600 | avg | 325677 | 4.277
> r31_11a | RANDOM | 3000 | avg | 52041 | 70.578
> r31_11a | RANDOM | 9 | avg | 1217 | 3963.836
> r31_11a | RANDOM | 40 | avg | 242 | 19771.67
> r31_11a | RANDOM | 100 | avg | 90 | 53417.95
> r31_11a | REPEATED | 600 | avg | 651354 | 1.112
> r31_11a | REPEATED | 3000 | avg | 104083 | 5.662
> r31_11a | REPEATED | 9 | avg | 2435 | 596.963
> r31_11a | REPEATED | 40 | avg | 484 | 2618.076
> r31_11a | REPEATED | 100 | avg | 180 | 6597.833
> r31_1...

Hello Vamsi (@vamsi-parasa),

Could you please run the new benchmarking to check sorting of all data types?
What you need is to compile and run JavaBenchmarkHarness:

javac --patch-module java.base=. -d classes *.java
java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
java.base=classes -cp classes java.util.JavaBenchmarkHarness

Find the sources there:

https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r32.java
https://github.com/iaroslavski/sorting/blob/master/radixsort/JavaBenchmarkHarness.java

Thank you,
Vladimir

-

PR Comment: https://git.openjdk.org/jdk/pull/13568#issuecomment-2179307223


Re: RFR: 8266431: Dual-Pivot Quicksort improvements (Radix sort) [v11]

2024-06-08 Thread Vladimir Yaroslavskiy
On Sun, 22 Oct 2023 17:26:52 GMT, Laurent Bourgès  wrote:

>> * improved  mixed insertion sort (makes whole sorting faster)
>> * introduced Radix which sort shows several times boost of performance and 
>> has linear complexity instead of n*ln(n)
>> * improved merging sort for almost sorted data
>> * optimized parallel sorting
>> * improved step for pivot candidates and pivot partitioning
>> * extended existing tests
>> * added benchmarking JMH tests
>> * suggested better buffer allocation: if no memory, it is switched to 
>> in-place sorting with no OutOfMemoryError, threshold is 1/16th heap
>> 
>> I am going on previous PR by Vladimir Yaroslavskyi: 
>> https://github.com/openjdk/jdk/pull/3938
>
> Laurent Bourgès has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   add @SuppressWarnings (serial)

Version for other data types is being prepared

-

PR Comment: https://git.openjdk.org/jdk/pull/13568#issuecomment-2156111460


Re: RFR: 8266431: Dual-Pivot Quicksort improvements (Radix sort) [v11]

2024-05-10 Thread Srinivas Vamsi Parasa
On Wed, 8 May 2024 20:37:28 GMT, Vladimir Yaroslavskiy  wrote:

>> Hi Vladimir (@iaroslavski),
>> 
>> Please see the data below.
>> 
>> Thanks,
>> Vamsi
>> 
>> name | builder | size | mode | count | score
>> -- | -- | -- | -- | -- | --
>> b01 | RANDOM | 600 | avg | 325677 | 6.764
>> b01 | RANDOM | 3000 | avg | 52041 | 77.742
>> b01 | RANDOM | 9 | avg | 1217 | 4449.668
>> b01 | RANDOM | 40 | avg | 242 | 22764.05
>> b01 | RANDOM | 100 | avg | 90 | 60737.71
>> b01 | REPEATED | 600 | avg | 651354 | 1.723
>> b01 | REPEATED | 3000 | avg | 104083 | 12.383
>> b01 | REPEATED | 9 | avg | 2435 | 714.451
>> b01 | REPEATED | 40 | avg | 484 | 3039.447
>> b01 | REPEATED | 100 | avg | 180 | 8114.503
>> b01 | SAWTOOTH | 600 | avg | 1954062 | 1.009
>> b01 | SAWTOOTH | 3000 | avg | 312251 | 4.94
>> b01 | SAWTOOTH | 9 | avg | 7305 | 133.192
>> b01 | SAWTOOTH | 40 | avg | 1453 | 591.854
>> b01 | SAWTOOTH | 100 | avg | 542 | 1494.252
>> b01 | STAGGER | 600 | avg | 1954062 | 8.252
>> b01 | STAGGER | 3000 | avg | 312251 | 10.449
>> b01 | STAGGER | 9 | avg | 7305 | 287.811
>> b01 | STAGGER | 40 | avg | 1453 | 1288.92
>> b01 | STAGGER | 100 | avg | 542 | 3245.649
>> b01 | SHUFFLE | 600 | avg | 325677 | 5.199
>> b01 | SHUFFLE | 3000 | avg | 52041 | 29.734
>> b01 | SHUFFLE | 9 | avg | 1217 | 1392.125
>> b01 | SHUFFLE | 40 | avg | 242 | 5772.859
>> b01 | SHUFFLE | 100 | avg | 90 | 15483.65
>> r30 | RANDOM | 600 | avg | 325677 | 4.307
>> r30 | RANDOM | 3000 | avg | 52041 | 71.438
>> r30 | RANDOM | 9 | avg | 1217 | 3971.947
>> r30 | RANDOM | 40 | avg | 242 | 19924.32
>> r30 | RANDOM | 100 | avg | 90 | 53671.9
>> r30 | REPEATED | 600 | avg | 651354 | 1.36
>> r30 | REPEATED | 3000 | avg | 104083 | 6.415
>> r30 | REPEATED | 9 | avg | 2435 | 578.708
>> r30 | REPEATED | 40 | avg | 484 | 2488.414
>> r30 | REPEATED | 100 | avg | 180 | 6280.025
>> r30 | SAWTOOTH | 600 | avg | 1954062 | 0.488
>> r30 | SAWTOOTH | 3000 | avg | 312251 | 2.409
>> r30 | SAWTOOTH | 9 | avg | 7305 | 71.98
>> r30 | SAWTOOTH | 40 | avg | 1453 | 343.433
>> r30 | SAWTOOTH | 100 | avg | 542 | 954.287
>> r30 | STAGGER | 600 | avg | 1954062 | 1.064
>> r30 | STAGGER | 3000 | avg | 312251 | 4.559
>> r30 | STAGGER | 9 | avg | 7305 | 135.383
>> r30 | STAGGER | 40 | avg | 1453 | 626.657
>> r30 | STAGGER | 100 | avg | 542 | 1653.92
>> r30 | SHUFFLE | 600 | avg | 325677 | 2.924
>> r30 | SHUFFLE | 3000 | avg | 52041 | 18.819
>> r30 | SHUFFLE | 9 | avg | 1217 | 1019.036
>> r30 | SHUFFLE | 40 | avg | 242 | 4661.484
>> r30 | SHUFFLE | 100 ...
>
> Hello Vamsi (@vamsi-parasa),
> 
> Could you please run the new benchmarking to finalize the best version?
> What you need is to compile and run JavaBenchmarkHarness:
> 
> javac --patch-module java.base=. -d classes *.java
> java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
> java.base=classes -cp classes java.util.JavaBenchmarkHarness
> 
> Find the sources there:
> 
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_11.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_11a.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_12.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_12a.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/JavaBenchmarkHarness.java
> 
> Thank you,
> Vladimir

Hi Vladimir (@iaroslavski),

Please see the data below.

Thanks,
Vamsi


name | builder | size | mode | count | score
-- | -- | -- | -- | -- | --
b01 | RANDOM | 600 | avg | 325677 | 6.861
b01 | RANDOM | 3000 | avg | 52041 | 77.313
b01 | RANDOM | 9 | avg | 1217 | 4315.41
b01 | RANDOM | 40 | avg | 242 | 22110.95
b01 | RANDOM | 100 | avg | 90 | 58613.45
b01 | REPEATED | 600 | avg | 651354 | 1.993
b01 | REPEATED | 3000 | avg | 104083 | 13.026
b01 | REPEATED | 9 | avg | 2435 | 741.97
b01 | REPEATED | 40 | avg | 484 | 3161.073
b01 | REPEATED | 100 | avg | 180 | 8363.671
b01 | STAGGER | 600 | avg | 1954062 | 9.124
b01 | STAGGER | 3000 | avg | 312251 | 10.026
b01 | STAGGER | 9 | avg | 7305 | 286.313
b01 | STAGGER | 40 | avg | 1453 | 1278.758
b01 | STAGGER | 100 | avg | 542 | 3242.849
b01 | SHUFFLE | 600 | avg | 325677 | 5.113
b01 | SHUFFLE | 3000 | avg | 52041 | 28.85
b01 | SHUFFLE | 9 | avg | 1217 | 1368.91
b01 | SHUFFLE | 40 | avg | 242 | 5718.052
b01 | SHUFFLE | 100 | avg | 90 | 15376.1
r31_11 | RANDOM | 600 | avg | 325677 | 4.305
r31_11 | RANDOM | 3000 | avg | 52041 | 73.399
r31_11 | RANDOM | 9 | avg | 1217 | 3963.515
r31_11 | RANDOM | 40 | avg | 242 | 19841.07
r31_11 | RANDOM | 100 | avg | 90 | 53372.63
r31_11 | REPEATED | 600 | avg | 651354 | 1.208
r31_11 | REPEATED | 3000 | avg | 104083 | 6.206
r31_11 | REPEATED | 

Re: RFR: 8266431: Dual-Pivot Quicksort improvements (Radix sort) [v11]

2024-05-08 Thread Vladimir Yaroslavskiy
On Mon, 6 May 2024 23:26:49 GMT, Srinivas Vamsi Parasa  wrote:

>> Hello Vamsi (@vamsi-parasa),
>> 
>> Could you please run the new benchmarking to detect the best case
>> for Radix sort and parallel sorting?
>> 
>> What you need is to compile and run JavaBenchmarkHarness:
>> 
>> javac --patch-module java.base=. -d classes *.java
>> java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
>> java.base=classes -cp classes java.util.JavaBenchmarkHarness
>> 
>> Find the sources there:
>> 
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_a.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_5.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_11.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_12.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_13.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_14.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_21.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_23.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/JavaBenchmarkHarness.java
>> 
>> Thank you,
>> Vladimir
>
> Hi Vladimir (@iaroslavski),
> 
> Please see the data below.
> 
> Thanks,
> Vamsi
> 
> name | builder | size | mode | count | score
> -- | -- | -- | -- | -- | --
> b01 | RANDOM | 600 | avg | 325677 | 6.764
> b01 | RANDOM | 3000 | avg | 52041 | 77.742
> b01 | RANDOM | 9 | avg | 1217 | 4449.668
> b01 | RANDOM | 40 | avg | 242 | 22764.05
> b01 | RANDOM | 100 | avg | 90 | 60737.71
> b01 | REPEATED | 600 | avg | 651354 | 1.723
> b01 | REPEATED | 3000 | avg | 104083 | 12.383
> b01 | REPEATED | 9 | avg | 2435 | 714.451
> b01 | REPEATED | 40 | avg | 484 | 3039.447
> b01 | REPEATED | 100 | avg | 180 | 8114.503
> b01 | SAWTOOTH | 600 | avg | 1954062 | 1.009
> b01 | SAWTOOTH | 3000 | avg | 312251 | 4.94
> b01 | SAWTOOTH | 9 | avg | 7305 | 133.192
> b01 | SAWTOOTH | 40 | avg | 1453 | 591.854
> b01 | SAWTOOTH | 100 | avg | 542 | 1494.252
> b01 | STAGGER | 600 | avg | 1954062 | 8.252
> b01 | STAGGER | 3000 | avg | 312251 | 10.449
> b01 | STAGGER | 9 | avg | 7305 | 287.811
> b01 | STAGGER | 40 | avg | 1453 | 1288.92
> b01 | STAGGER | 100 | avg | 542 | 3245.649
> b01 | SHUFFLE | 600 | avg | 325677 | 5.199
> b01 | SHUFFLE | 3000 | avg | 52041 | 29.734
> b01 | SHUFFLE | 9 | avg | 1217 | 1392.125
> b01 | SHUFFLE | 40 | avg | 242 | 5772.859
> b01 | SHUFFLE | 100 | avg | 90 | 15483.65
> r30 | RANDOM | 600 | avg | 325677 | 4.307
> r30 | RANDOM | 3000 | avg | 52041 | 71.438
> r30 | RANDOM | 9 | avg | 1217 | 3971.947
> r30 | RANDOM | 40 | avg | 242 | 19924.32
> r30 | RANDOM | 100 | avg | 90 | 53671.9
> r30 | REPEATED | 600 | avg | 651354 | 1.36
> r30 | REPEATED | 3000 | avg | 104083 | 6.415
> r30 | REPEATED | 9 | avg | 2435 | 578.708
> r30 | REPEATED | 40 | avg | 484 | 2488.414
> r30 | REPEATED | 100 | avg | 180 | 6280.025
> r30 | SAWTOOTH | 600 | avg | 1954062 | 0.488
> r30 | SAWTOOTH | 3000 | avg | 312251 | 2.409
> r30 | SAWTOOTH | 9 | avg | 7305 | 71.98
> r30 | SAWTOOTH | 40 | avg | 1453 | 343.433
> r30 | SAWTOOTH | 100 | avg | 542 | 954.287
> r30 | STAGGER | 600 | avg | 1954062 | 1.064
> r30 | STAGGER | 3000 | avg | 312251 | 4.559
> r30 | STAGGER | 9 | avg | 7305 | 135.383
> r30 | STAGGER | 40 | avg | 1453 | 626.657
> r30 | STAGGER | 100 | avg | 542 | 1653.92
> r30 | SHUFFLE | 600 | avg | 325677 | 2.924
> r30 | SHUFFLE | 3000 | avg | 52041 | 18.819
> r30 | SHUFFLE | 9 | avg | 1217 | 1019.036
> r30 | SHUFFLE | 40 | avg | 242 | 4661.484
> r30 | SHUFFLE | 100 | avg | 90 | 11333.52
> r30_a | RANDOM | 600 | avg | 325677 | 4.024
> r30_a | RANDOM | 3000 | avg | 52041 | 72.86
> r30_a | ...

Hello Vamsi (@vamsi-parasa),

Could you please run the new benchmarking to finalize the best version?
What you need is to compile and run JavaBenchmarkHarness:

javac --patch-module java.base=. -d classes *.java
java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
java.base=classes -cp classes java.util.JavaBenchmarkHarness

Find the sources there:

https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_11.java
https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_11a.java
https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r31_12.java

Re: RFR: 8266431: Dual-Pivot Quicksort improvements (Radix sort) [v11]

2024-05-06 Thread Srinivas Vamsi Parasa
On Tue, 30 Apr 2024 22:01:30 GMT, Vladimir Yaroslavskiy  
wrote:

>> Hi Vladimir (@iaroslavski),
>> 
>> Please see the data below:
>> 
>> Thanks,
>> Vamsi
>> 
>> 
>> 
>> name | builder | size | mode | count | score
>> -- | -- | -- | -- | -- | --
>> b01 | RANDOM | 600 | avg | 325677 | 6.862
>> b01 | RANDOM | 3000 | avg | 52041 | 82.233
>> b01 | RANDOM | 9 | avg | 1217 | 4456.51
>> b01 | RANDOM | 40 | avg | 242 | 22923.28
>> b01 | RANDOM | 100 | avg | 90 | 60598.84
>> b01 | REPEATED | 600 | avg | 651354 | 1.933
>> b01 | REPEATED | 3000 | avg | 104083 | 13.753
>> b01 | REPEATED | 9 | avg | 2435 | 723.039
>> b01 | REPEATED | 40 | avg | 484 | 3084.416
>> b01 | REPEATED | 100 | avg | 180 | 8234.428
>> b01 | STAGGER | 600 | avg | 1954062 | 1.005
>> b01 | STAGGER | 3000 | avg | 312251 | 4.945
>> b01 | STAGGER | 9 | avg | 7305 | 133.126
>> b01 | STAGGER | 40 | avg | 1453 | 592.144
>> b01 | STAGGER | 100 | avg | 542 | 1493.876
>> b01 | SHUFFLE | 600 | avg | 325677 | 5.12
>> b01 | SHUFFLE | 3000 | avg | 52041 | 29.252
>> b01 | SHUFFLE | 9 | avg | 1217 | 1396.664
>> b01 | SHUFFLE | 40 | avg | 242 | 5743.489
>> b01 | SHUFFLE | 100 | avg | 90 | 15490.81
>> b01_ins | RANDOM | 600 | avg | 325677 | 7.594
>> b01_ins | RANDOM | 3000 | avg | 52041 | 78.631
>> b01_ins | RANDOM | 9 | avg | 1217 | 4312.511
>> b01_ins | RANDOM | 40 | avg | 242 | 22108.18
>> b01_ins | RANDOM | 100 | avg | 90 | 58467.16
>> b01_ins | REPEATED | 600 | avg | 651354 | 1.569
>> b01_ins | REPEATED | 3000 | avg | 104083 | 11.313
>> b01_ins | REPEATED | 9 | avg | 2435 | 720.838
>> b01_ins | REPEATED | 40 | avg | 484 | 3003.673
>> b01_ins | REPEATED | 100 | avg | 180 | 8144.944
>> b01_ins | STAGGER | 600 | avg | 1954062 | 0.98
>> b01_ins | STAGGER | 3000 | avg | 312251 | 4.948
>> b01_ins | STAGGER | 9 | avg | 7305 | 132.909
>> b01_ins | STAGGER | 40 | avg | 1453 | 592.572
>> b01_ins | STAGGER | 100 | avg | 542 | 1492.627
>> b01_ins | SHUFFLE | 600 | avg | 325677 | 4.092
>> b01_ins | SHUFFLE | 3000 | avg | 52041 | 27.138
>> b01_ins | SHUFFLE | 9 | avg | 1217 | 1304.326
>> b01_ins | SHUFFLE | 40 | avg | 242 | 5465.745
>> b01_ins | SHUFFLE | 100 | avg | 90 | 14585.08
>> b01_mrg | RANDOM | 600 | avg | 325677 | 7.139
>> b01_mrg | RANDOM | 3000 | avg | 52041 | 81.01
>> b01_mrg | RANDOM | 9 | avg | 1217 | 4266.084
>> b01_mrg | RANDOM | 40 | avg | 242 | 21937.77
>> b01_mrg | RANDOM | 100 | avg | 90 | 58177.72
>> b01_mrg | REPEATED | 600 | avg | 651354 | 1.36
>> b01_mrg | REPEATED | 3000 | avg | 104083 | 9.013
>> b01_mrg | REPEATED ...
>
> Hello Vamsi (@vamsi-parasa),
> 
> Could you please run the new benchmarking to detect the best case
> for Radix sort and parallel sorting?
> 
> What you need is to compile and run JavaBenchmarkHarness:
> 
> javac --patch-module java.base=. -d classes *.java
> java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
> java.base=classes -cp classes java.util.JavaBenchmarkHarness
> 
> Find the sources there:
> 
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_a.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_5.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_11.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_12.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_13.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_14.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_21.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_23.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/JavaBenchmarkHarness.java
> 
> Thank you,
> Vladimir

Hi Vladimir (@iaroslavski),

Please see the data below.

Thanks,
Vamsi

name | builder | size | mode | count | score
-- | -- | -- | -- | -- | --
b01 | RANDOM | 600 | avg | 325677 | 6.764
b01 | RANDOM | 3000 | avg | 52041 | 77.742
b01 | RANDOM | 9 | avg | 1217 | 4449.668
b01 | RANDOM | 40 | avg | 242 | 22764.05
b01 | RANDOM | 100 | avg | 90 | 60737.71
b01 | REPEATED | 600 | avg | 651354 | 1.723
b01 | REPEATED | 3000 | avg | 104083 | 12.383
b01 | REPEATED | 9 | avg | 2435 | 714.451
b01 | REPEATED | 40 | avg | 484 | 3039.447
b01 | REPEATED | 100 | avg | 180 | 8114.503
b01 | SAWTOOTH | 600 | avg | 1954062 | 1.009
b01 | SAWTOOTH | 3000 | avg | 312251 | 4.94
b01 | SAWTOOTH | 9 | avg | 7305 | 133.192
b01 | SAWTOOTH | 40 | avg | 1453 | 591.854
b01 | SAWTOOTH | 100 | avg | 542 | 1494.252
b01 | STAGGER | 600 | avg | 1954062 | 8.252
b01 | STAGGER | 3000 | 

Re: RFR: 8266431: Dual-Pivot Quicksort improvements (Radix sort) [v11]

2024-04-30 Thread Vladimir Yaroslavskiy
On Sun, 21 Apr 2024 04:37:45 GMT, Srinivas Vamsi Parasa  
wrote:

>> Hello Vamsi (@vamsi-parasa),
>> 
>> Could you please run the new benchmarking?
>> To save time and don't patch JDK several times, I've created 
>> JavaBenchmarkHarness
>> class which is under package java.util and compares several versions of DPQS.
>> Also I prepared several versions of current sorting source from JDK to 
>> detect what is going wrong.
>> 
>> What you need is to compile and run JavaBenchmarkHarness once:
>> 
>> javac --patch-module java.base=. -d classes *.java
>> java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
>> java.base=classes -cp classes java.util.JavaBenchmarkHarness
>> 
>> Find the sources there:
>> 
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/JavaBenchmarkHarness.java
>>   
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_ins.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_mrg.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_piv.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_prt.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r29p.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r29p5.java
>> 
>> Thank you,
>> Vladimir
>
> Hi Vladimir (@iaroslavski),
> 
> Please see the data below:
> 
> Thanks,
> Vamsi
> 
> 
> 
> name | builder | size | mode | count | score
> -- | -- | -- | -- | -- | --
> b01 | RANDOM | 600 | avg | 325677 | 6.862
> b01 | RANDOM | 3000 | avg | 52041 | 82.233
> b01 | RANDOM | 9 | avg | 1217 | 4456.51
> b01 | RANDOM | 40 | avg | 242 | 22923.28
> b01 | RANDOM | 100 | avg | 90 | 60598.84
> b01 | REPEATED | 600 | avg | 651354 | 1.933
> b01 | REPEATED | 3000 | avg | 104083 | 13.753
> b01 | REPEATED | 9 | avg | 2435 | 723.039
> b01 | REPEATED | 40 | avg | 484 | 3084.416
> b01 | REPEATED | 100 | avg | 180 | 8234.428
> b01 | STAGGER | 600 | avg | 1954062 | 1.005
> b01 | STAGGER | 3000 | avg | 312251 | 4.945
> b01 | STAGGER | 9 | avg | 7305 | 133.126
> b01 | STAGGER | 40 | avg | 1453 | 592.144
> b01 | STAGGER | 100 | avg | 542 | 1493.876
> b01 | SHUFFLE | 600 | avg | 325677 | 5.12
> b01 | SHUFFLE | 3000 | avg | 52041 | 29.252
> b01 | SHUFFLE | 9 | avg | 1217 | 1396.664
> b01 | SHUFFLE | 40 | avg | 242 | 5743.489
> b01 | SHUFFLE | 100 | avg | 90 | 15490.81
> b01_ins | RANDOM | 600 | avg | 325677 | 7.594
> b01_ins | RANDOM | 3000 | avg | 52041 | 78.631
> b01_ins | RANDOM | 9 | avg | 1217 | 4312.511
> b01_ins | RANDOM | 40 | avg | 242 | 22108.18
> b01_ins | RANDOM | 100 | avg | 90 | 58467.16
> b01_ins | REPEATED | 600 | avg | 651354 | 1.569
> b01_ins | REPEATED | 3000 | avg | 104083 | 11.313
> b01_ins | REPEATED | 9 | avg | 2435 | 720.838
> b01_ins | REPEATED | 40 | avg | 484 | 3003.673
> b01_ins | REPEATED | 100 | avg | 180 | 8144.944
> b01_ins | STAGGER | 600 | avg | 1954062 | 0.98
> b01_ins | STAGGER | 3000 | avg | 312251 | 4.948
> b01_ins | STAGGER | 9 | avg | 7305 | 132.909
> b01_ins | STAGGER | 40 | avg | 1453 | 592.572
> b01_ins | STAGGER | 100 | avg | 542 | 1492.627
> b01_ins | SHUFFLE | 600 | avg | 325677 | 4.092
> b01_ins | SHUFFLE | 3000 | avg | 52041 | 27.138
> b01_ins | SHUFFLE | 9 | avg | 1217 | 1304.326
> b01_ins | SHUFFLE | 40 | avg | 242 | 5465.745
> b01_ins | SHUFFLE | 100 | avg | 90 | 14585.08
> b01_mrg | RANDOM | 600 | avg | 325677 | 7.139
> b01_mrg | RANDOM | 3000 | avg | 52041 | 81.01
> b01_mrg | RANDOM | 9 | avg | 1217 | 4266.084
> b01_mrg | RANDOM | 40 | avg | 242 | 21937.77
> b01_mrg | RANDOM | 100 | avg | 90 | 58177.72
> b01_mrg | REPEATED | 600 | avg | 651354 | 1.36
> b01_mrg | REPEATED | 3000 | avg | 104083 | 9.013
> b01_mrg | REPEATED | 9 | avg | 2435 | 737.684
> b01_mrg | REPEATED | 40 | avg | 484 | 3152.447
> b01_mrg | REPEATED | 100 | avg |...

Hello Vamsi (@vamsi-parasa),

Could you please run the new benchmarking to detect the best case
for Radix sort and parallel sorting?

What you need is to compile and run JavaBenchmarkHarness:

javac --patch-module java.base=. -d classes *.java
java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
java.base=classes -cp classes java.util.JavaBenchmarkHarness

Find the sources there:

https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30.java
https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_a.java
https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_11.java
https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r30_12.java

Re: RFR: 8266431: Dual-Pivot Quicksort improvements (Radix sort) [v11]

2024-04-21 Thread Vladimir Yaroslavskiy
On Sun, 21 Apr 2024 04:37:45 GMT, Srinivas Vamsi Parasa  
wrote:

>> Hello Vamsi (@vamsi-parasa),
>> 
>> Could you please run the new benchmarking?
>> To save time and don't patch JDK several times, I've created 
>> JavaBenchmarkHarness
>> class which is under package java.util and compares several versions of DPQS.
>> Also I prepared several versions of current sorting source from JDK to 
>> detect what is going wrong.
>> 
>> What you need is to compile and run JavaBenchmarkHarness once:
>> 
>> javac --patch-module java.base=. -d classes *.java
>> java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
>> java.base=classes -cp classes java.util.JavaBenchmarkHarness
>> 
>> Find the sources there:
>> 
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/JavaBenchmarkHarness.java
>>   
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_ins.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_mrg.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_piv.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_prt.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r29p.java
>> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r29p5.java
>> 
>> Thank you,
>> Vladimir
>
> Hi Vladimir (@iaroslavski),
> 
> Please see the data below:
> 
> Thanks,
> Vamsi
> 
> 
> 
> name | builder | size | mode | count | score
> -- | -- | -- | -- | -- | --
> b01 | RANDOM | 600 | avg | 325677 | 6.862
> b01 | RANDOM | 3000 | avg | 52041 | 82.233
> b01 | RANDOM | 9 | avg | 1217 | 4456.51
> b01 | RANDOM | 40 | avg | 242 | 22923.28
> b01 | RANDOM | 100 | avg | 90 | 60598.84
> b01 | REPEATED | 600 | avg | 651354 | 1.933
> b01 | REPEATED | 3000 | avg | 104083 | 13.753
> b01 | REPEATED | 9 | avg | 2435 | 723.039
> b01 | REPEATED | 40 | avg | 484 | 3084.416
> b01 | REPEATED | 100 | avg | 180 | 8234.428
> b01 | STAGGER | 600 | avg | 1954062 | 1.005
> b01 | STAGGER | 3000 | avg | 312251 | 4.945
> b01 | STAGGER | 9 | avg | 7305 | 133.126
> b01 | STAGGER | 40 | avg | 1453 | 592.144
> b01 | STAGGER | 100 | avg | 542 | 1493.876
> b01 | SHUFFLE | 600 | avg | 325677 | 5.12
> b01 | SHUFFLE | 3000 | avg | 52041 | 29.252
> b01 | SHUFFLE | 9 | avg | 1217 | 1396.664
> b01 | SHUFFLE | 40 | avg | 242 | 5743.489
> b01 | SHUFFLE | 100 | avg | 90 | 15490.81
> b01_ins | RANDOM | 600 | avg | 325677 | 7.594
> b01_ins | RANDOM | 3000 | avg | 52041 | 78.631
> b01_ins | RANDOM | 9 | avg | 1217 | 4312.511
> b01_ins | RANDOM | 40 | avg | 242 | 22108.18
> b01_ins | RANDOM | 100 | avg | 90 | 58467.16
> b01_ins | REPEATED | 600 | avg | 651354 | 1.569
> b01_ins | REPEATED | 3000 | avg | 104083 | 11.313
> b01_ins | REPEATED | 9 | avg | 2435 | 720.838
> b01_ins | REPEATED | 40 | avg | 484 | 3003.673
> b01_ins | REPEATED | 100 | avg | 180 | 8144.944
> b01_ins | STAGGER | 600 | avg | 1954062 | 0.98
> b01_ins | STAGGER | 3000 | avg | 312251 | 4.948
> b01_ins | STAGGER | 9 | avg | 7305 | 132.909
> b01_ins | STAGGER | 40 | avg | 1453 | 592.572
> b01_ins | STAGGER | 100 | avg | 542 | 1492.627
> b01_ins | SHUFFLE | 600 | avg | 325677 | 4.092
> b01_ins | SHUFFLE | 3000 | avg | 52041 | 27.138
> b01_ins | SHUFFLE | 9 | avg | 1217 | 1304.326
> b01_ins | SHUFFLE | 40 | avg | 242 | 5465.745
> b01_ins | SHUFFLE | 100 | avg | 90 | 14585.08
> b01_mrg | RANDOM | 600 | avg | 325677 | 7.139
> b01_mrg | RANDOM | 3000 | avg | 52041 | 81.01
> b01_mrg | RANDOM | 9 | avg | 1217 | 4266.084
> b01_mrg | RANDOM | 40 | avg | 242 | 21937.77
> b01_mrg | RANDOM | 100 | avg | 90 | 58177.72
> b01_mrg | REPEATED | 600 | avg | 651354 | 1.36
> b01_mrg | REPEATED | 3000 | avg | 104083 | 9.013
> b01_mrg | REPEATED | 9 | avg | 2435 | 737.684
> b01_mrg | REPEATED | 40 | avg | 484 | 3152.447
> b01_mrg | REPEATED | 100 | avg |...

Thank you, @vamsi-parasa !
I will investigate the result

-

PR Comment: https://git.openjdk.org/jdk/pull/13568#issuecomment-2068075025


Re: RFR: 8266431: Dual-Pivot Quicksort improvements (Radix sort) [v11]

2024-04-20 Thread Srinivas Vamsi Parasa
On Tue, 9 Apr 2024 21:36:46 GMT, Vladimir Yaroslavskiy  wrote:

>>> Hi Vamsi (@vamsi-parasa), few questions on your test environment:
>>> 
>>> * what are the hardware specs of your server ?
>>> * bare-metal or virtual ?
>>> * are other services or big processes running ?
>>> * os tuning ? CPU HT: off? Fixed CPU governor or frequency ?
>>> * isolation using taskset ?
>>> 
>>> Maybe C2 JIT (+ CDS archive) are given more performance on stock jdk sort 
>>> than same code running outside jdk...
>>> 
>>> Thanks, Laurent
>> 
>> Hi Laurent,
>> 
>> The benchmarks are run on Intel TigerLake Core i7 machine. It's bare-metal 
>> without any virtualization. HT is ON and there is no other specific OS 
>> tuning or isolation using taskset.
>> 
>> Thanks,
>> Vamsi
>
> Hello Vamsi (@vamsi-parasa),
> 
> Could you please run the new benchmarking?
> To save time and don't patch JDK several times, I've created 
> JavaBenchmarkHarness
> class which is under package java.util and compares several versions of DPQS.
> Also I prepared several versions of current sorting source from JDK to detect 
> what is going wrong.
> 
> What you need is to compile and run JavaBenchmarkHarness once:
> 
> javac --patch-module java.base=. -d classes *.java
> java -XX:CompileThreshold=1 -XX:-TieredCompilation --patch-module 
> java.base=classes -cp classes java.util.JavaBenchmarkHarness
> 
> Find the sources there:
> 
> https://github.com/iaroslavski/sorting/blob/master/radixsort/JavaBenchmarkHarness.java
>   
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_ins.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_mrg.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_piv.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_b01_prt.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r29p.java
> https://github.com/iaroslavski/sorting/blob/master/radixsort/DualPivotQuicksort_r29p5.java
> 
> Thank you,
> Vladimir

Hi Vladimir (@iaroslavski),

Please see the data below:

Thanks,
Vamsi



name | builder | size | mode | count | score
-- | -- | -- | -- | -- | --
b01 | RANDOM | 600 | avg | 325677 | 6.862
b01 | RANDOM | 3000 | avg | 52041 | 82.233
b01 | RANDOM | 9 | avg | 1217 | 4456.51
b01 | RANDOM | 40 | avg | 242 | 22923.28
b01 | RANDOM | 100 | avg | 90 | 60598.84
b01 | REPEATED | 600 | avg | 651354 | 1.933
b01 | REPEATED | 3000 | avg | 104083 | 13.753
b01 | REPEATED | 9 | avg | 2435 | 723.039
b01 | REPEATED | 40 | avg | 484 | 3084.416
b01 | REPEATED | 100 | avg | 180 | 8234.428
b01 | STAGGER | 600 | avg | 1954062 | 1.005
b01 | STAGGER | 3000 | avg | 312251 | 4.945
b01 | STAGGER | 9 | avg | 7305 | 133.126
b01 | STAGGER | 40 | avg | 1453 | 592.144
b01 | STAGGER | 100 | avg | 542 | 1493.876
b01 | SHUFFLE | 600 | avg | 325677 | 5.12
b01 | SHUFFLE | 3000 | avg | 52041 | 29.252
b01 | SHUFFLE | 9 | avg | 1217 | 1396.664
b01 | SHUFFLE | 40 | avg | 242 | 5743.489
b01 | SHUFFLE | 100 | avg | 90 | 15490.81
b01_ins | RANDOM | 600 | avg | 325677 | 7.594
b01_ins | RANDOM | 3000 | avg | 52041 | 78.631
b01_ins | RANDOM | 9 | avg | 1217 | 4312.511
b01_ins | RANDOM | 40 | avg | 242 | 22108.18
b01_ins | RANDOM | 100 | avg | 90 | 58467.16
b01_ins | REPEATED | 600 | avg | 651354 | 1.569
b01_ins | REPEATED | 3000 | avg | 104083 | 11.313
b01_ins | REPEATED | 9 | avg | 2435 | 720.838
b01_ins | REPEATED | 40 | avg | 484 | 3003.673
b01_ins | REPEATED | 100 | avg | 180 | 8144.944
b01_ins | STAGGER | 600 | avg | 1954062 | 0.98
b01_ins | STAGGER | 3000 | avg | 312251 | 4.948
b01_ins | STAGGER | 9 | avg | 7305 | 132.909
b01_ins | STAGGER | 40 | avg | 1453 | 592.572
b01_ins | STAGGER | 100 | avg | 542 | 1492.627
b01_ins | SHUFFLE | 600 | avg | 325677 | 4.092
b01_ins | SHUFFLE | 3000 | avg | 52041 | 27.138
b01_ins | SHUFFLE | 9 | avg | 1217 | 1304.326
b01_ins | SHUFFLE | 40 | avg | 242 | 5465.745
b01_ins | SHUFFLE | 100 | avg | 90 | 14585.08
b01_mrg | RANDOM | 600 | avg | 325677 | 7.139
b01_mrg | RANDOM | 3000 | avg | 52041 | 81.01
b01_mrg | RANDOM | 9 | avg | 1217 | 4266.084
b01_mrg | RANDOM | 40 | avg | 242 | 21937.77
b01_mrg | RANDOM | 100 | avg | 90 | 58177.72
b01_mrg | REPEATED | 600 | avg | 651354 | 1.36
b01_mrg | REPEATED | 3000 | avg | 104083 | 9.013
b01_mrg | REPEATED | 9 | avg | 2435 | 737.684
b01_mrg | REPEATED | 40 | avg | 484 | 3152.447
b01_mrg | REPEATED | 100 | avg | 180 | 8366.866
b01_mrg | STAGGER | 600 | avg | 1954062 | 0.73
b01_mrg | STAGGER | 3000 | avg | 312251 | 3.733
b01_mrg | STAGGER | 9 | avg | 7305 | 114.35
b01_mrg | STAGGER | 40 | avg | 1453 | 524.821
b01_mrg | STAGGER | 100 | avg | 542 | 1351.504
b01_mrg | SHUFFLE | 600 | avg | 325677 | 4.986
b01_mrg |