I have spent some time refactoring Sort algorithm, it should be now 15% - 30% faster and more resistant to "bad" input data (we are now using median of 3 and up to 2 partitioning reattempts with Random (mersene twister based) choice of new 3 elements to get the new pivot).
I have found that actual implementation does not behave well (is slow) when there are many duplicate values in the array; it should be now fixed by using "3-partition method" (introducing pivot partition of elements with the same value).