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