Why is Dual-Pivot Quicksort Fast?
Sebastian Wild
wild@cs.uni-kl.de
29 September 2015
Theorietage 2015 Speyer
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 1 / 11
Why is Dual-Pivot Quicksort Fast? Sebastian Wild wild@cs.uni-kl.de - - PowerPoint PPT Presentation
Why is Dual-Pivot Quicksort Fast? Sebastian Wild wild@cs.uni-kl.de 29 September 2015 Theorietage 2015 Speyer Sebastian Wild Dual-Pivot Quicksort 2015-03-24 1 / 11 Sorting History Invention of Quicksort Dual-Pivot Quicksort in Java Age of
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 1 / 11
Ancient World Age of classic Quicksort Dual-Pivot Era
Invention of Quicksort Dual-Pivot Quicksort in Java
1969 1975 ’78 1993 1997 1961 ’62 ’77 today 2009 ’11 Sebastian Wild Dual-Pivot Quicksort 2015-03-24 2 / 11
Ancient World Age of classic Quicksort Dual-Pivot Era
Invention of Quicksort Dual-Pivot Quicksort in Java
1969 1975 ’78 1993 1997 1961 ’62 ’77 today 2009 ’11 Sebastian Wild Dual-Pivot Quicksort 2015-03-24 2 / 11
Ancient World Age of classic Quicksort Dual-Pivot Era
Invention of Quicksort Dual-Pivot Quicksort in Java
1969 1975 ’78 1993 1997 1961 ’62 ’77 today 2009 ’11 Sebastian Wild Dual-Pivot Quicksort 2015-03-24 2 / 11
Ancient World Age of classic Quicksort Dual-Pivot Era
Invention of Quicksort Dual-Pivot Quicksort in Java
1969 1975 ’78 1993 1997 1961 ’62 ’77 today 2009 ’11 Sebastian Wild Dual-Pivot Quicksort 2015-03-24 2 / 11
1
2
3
4
3 efficiently on arrays? Sebastian Wild Dual-Pivot Quicksort 2015-03-24 3 / 11
1
2
3
4
3 efficiently on arrays? Sebastian Wild Dual-Pivot Quicksort 2015-03-24 3 / 11
1
2
3
4
3 efficiently on arrays? Sebastian Wild Dual-Pivot Quicksort 2015-03-24 3 / 11
1
2
3
4
3 efficiently on arrays? Sebastian Wild Dual-Pivot Quicksort 2015-03-24 3 / 11
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
P≤◦≤Q
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 4 / 11
0.5 1 1.5 2 ·106 7 8 9 n time 10−6 · n ln n Java 6 Library Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 5 / 11
0.5 1 1.5 2 ·106 7 8 9 n time 10−6 · n ln n Java 6 Library Java 7 Library Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 5 / 11
0.5 1 1.5 2 ·106 7 8 9 n time 10−6 · n ln n Java 6 Library Java 7 Library Classic Quicksort Yaroslavskiy Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 5 / 11
0.5 1 1.5 2 ·106 7 8 9 n time 10−6 · n ln n Java 6 Library Java 7 Library Classic Quicksort Yaroslavskiy Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 5 / 11
0.5 1 1.5 2 ·106 7 8 9 n time 10−6 · n ln n Java 6 Library Java 7 Library Classic Quicksort Yaroslavskiy Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 5 / 11
0.5 1 1.5 2 ·106 7 8 9 n time 10−6 · n ln n Java 6 Library Java 7 Library Classic Quicksort Yaroslavskiy Normalized Java runtimes (in ms). Average and standard deviation of 1000 random permutations per size.
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 5 / 11
(from various experiments)
−10±2%
−5%
+80%
+20.6%
+19.1%
+5%
−20%
+2%
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 6 / 11
(from various experiments)
−10±2%
−5%
+80%
+20.6%
+19.1%
+5%
−20%
+2%
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 6 / 11
(from various experiments)
−10±2%
−5%
+80%
+20.6%
+19.1%
+5%
−20%
+2%
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 6 / 11
(from various experiments)
−10±2%
−5%
+80%
+20.6%
+19.1%
+5%
−20%
+2%
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 6 / 11
(from various experiments)
−10±2%
−5%
+80%
+20.6%
+19.1%
+5%
−20%
+2%
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 6 / 11
(from various experiments)
−10±2%
−5%
+80%
+20.6%
+19.1%
+5%
−20%
+2%
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 6 / 11
1991 1995 2000 2005 2010 2015 100 102 104 106 CPU speed (MFLOPS)
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 102 104 106 CPU speed (MFLOPS)
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 102 104 106 CPU speed (MFLOPS) Averaged annual growth rates: 46% CPU speed
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 102 104 106 CPU speed (MFLOPS) RAM bandwidth (MWords/s) Averaged annual growth rates: 46% CPU speed
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 102 104 106 CPU speed (MFLOPS) RAM bandwidth (MWords/s) Averaged annual growth rates: 46% CPU speed 37% Memory Bandwidth
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 102 104 106 CPU speed (MFLOPS) RAM bandwidth (MWords/s) Averaged annual growth rates: 46% CPU speed 37% Memory Bandwidth
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 102 104 106 CPU speed (MFLOPS) RAM bandwidth (MWords/s) “imbalance”:
speed bandwidth
Averaged annual growth rates: 46% CPU speed 37% Memory Bandwidth 8.2% Imbalance
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 101 102 CPU speed (MFLOPS) RAM bandwidth (MWords/s) “imbalance”:
speed bandwidth
Averaged annual growth rates: 46% CPU speed 37% Memory Bandwidth 8.2% Imbalance
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 101 102 CPU speed (MFLOPS) RAM bandwidth (MWords/s) “imbalance”:
speed bandwidth
Averaged annual growth rates: 46% CPU speed 37% Memory Bandwidth 8.2% Imbalance
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 101 102 CPU speed (MFLOPS) RAM bandwidth (MWords/s) “imbalance”:
speed bandwidth
Averaged annual growth rates: 46% CPU speed 37% Memory Bandwidth 8.2% Imbalance
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1991 1995 2000 2005 2010 2015 100 101 102 CPU speed (MFLOPS) RAM bandwidth (MWords/s) “imbalance”:
speed bandwidth
Averaged annual growth rates: 46% CPU speed 37% Memory Bandwidth 8.2% Imbalance
STREAM benchmark data with linear regressions
www.cs.virginia.edu/stream/by_date/Balance.html
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 7 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
1
2
3
4
5
6
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 8 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
k g
ℓ k g
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 9 / 11
(from various experiments)
−10±2%
−5%
+80%
+20.6%
+19.1%
+5%
−20%
+2%
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 10 / 11
(from various experiments)
−10±2%
−5%
+80%
+20.6%
+19.1%
+5%
−20%
+2%
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 10 / 11
(from various experiments)
−10±2%
−5%
+80%
+20.6%
+19.1%
+5%
−20%
+2%
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 10 / 11
1
2
3
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 11 / 11
1
2
3
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 11 / 11
1
2
3
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 11 / 11
1
2
3
Sebastian Wild Dual-Pivot Quicksort 2015-03-24 11 / 11