В 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.
*/
Как это влияет на производительность?Разве компилятор не сведет их к одному и тому же?
В более широком смысле, какова хорошая стратегия для самостоятельного исследования этого?Я могу запустить тесты, но мне больше интересно анализировать любые различия в скомпилированном коде.Однако я не знаю, какие инструменты использовать и т. Д.