More balanced performance profile

Reduced the number of comparisons at the cost of some speed. For highly
random data and super-fast comparisons this ends up being about 15%
slower, but for slower comparisons or other data arrangements it's up
to 20% faster. Overall I believe it's more balanced and ready for
real-world data.