I'm currently developing a Dual-Pivot 5-way QuickSort (to be used in my QSufSort reimplementation).

While sorting it will maintain following structure:

lower than lower pivot | equal to lower pivot | between pivots | unsorted data | between pivots | equal to higher pivot | higher than higher pivot

There are 7 sections, but as you see two sections have same meaning and one section is unsorted data, so those three should be counted as one. Finally, the structure will be:

lower than lower pivot | equal to lower pivot | between pivots | equal to higher pivot | higher than higher pivot

So there are 5 sections actually after finishing partitioning (so it's 5-way partitioning).

In MSufSort sources, more precisely in changelog, I've seen a remark that Michael switched to 7-way QuickSort (AFAIK from 3-way one) and that gave him an immediate 20 % (or so) performance boost. How could he make 7-way in-place QuickSort? Or did he in fact made 5-way one?