В Java6 как quicksort, так и mergesort были использованы в Arrays#sort
для примитивных и объектных массивов соответственно. В Java7 они оба изменились, на DualPivotQuicksort и Timsort.
В источнике для новой быстрой сортировки в нескольких местах появляется следующий комментарий (например, строка 354):
/*
* Here and below we use "a[i] = b; i++;" instead
* of "a[i++] = b;" due to performance issue.
*/
Как это проблема производительности? Разве компилятор не уменьшит их до одного и того же?
В более широком смысле, какая хорошая стратегия для этого? Я могу запускать тесты, но меня больше интересует анализ любых различий в скомпилированном коде. Однако я не знаю, какие инструменты использовать и т.д.