QuickSort fails to be speedy in 3 specific cases.
Highly redundant data, sorted, and array constructions where middle element is always least or greatest in the range if you're always using the middle element as your pivot. It's a LONG discussion and there are ways to construct this EASILY. This is why I recommend against using QuickSort if you do not know the data is fairly randomly arranged.
FlashSort in ALL my experience and attempts to thwart its generally stellar performance for numbers has never let me down. If you INSIST on using QuickSort, I recommend IntroSort, a mix of QuickSort, heapsort and InsertionSort, guaranteed faster than QuickSort worst case and
relatively speedy and in-place, meaning no auxiliary as is necessary for FlashSort or MergeSort. All these algorithms and then some are in my contributed sorting library.