Java 7 classificando “otimização”
No Java6, quicksort e mergesort foram usados emArrays#sort
, para matrizes primitivas e de objeto, respectivamente. No Java7, ambos mudaram para DualPivotQuicksort e Timsort.
Na fonte do novo quicksort, o seguinte comentário aparece em alguns lugares (por exemplo, linha 354):
/*
* Here and below we use "a[i] = b; i++;" instead
* of "a[i++] = b;" due to performance issue.
*/
Como isso é um problema de desempenho? O compilador não irá reduzi-los para a mesma coisa?
De maneira geral, qual é uma boa estratégia para investigar isso eu mesmo? Posso executar benchmarks, mas estaria mais interessado em analisar as diferenças no código compilado. No entanto, não sei quais ferramentas usar etc.