Por que processar um array ordenado é mais rápido do que um não ordenado?
Olá, colegas! Sou um desenvolvedor Java iniciante e me deparei com um comportamento estranho no meu código. Tenho um teste simples de desempenho: somo todos os elementos de um array que são maiores que um certo limite. Mas notei que, se o array for pré-ordenado, o código executa 2-3 vezes mais rápido! Aqui está meu código:
```java
public class BranchPredictionTest {
public static void main(String[] args) {
int size = 100000;
int[] data = new int[size];
Random rand = new Random();
for (int i = 0; i < size; i++) {
data[i] = rand.nextInt(256);
}
// Ordenamos o array
int[] sorted = data.clone();
Arrays.sort(sorted);
long start = System.nanoTime();
long sumSorted = processArray(sorted);
long end = System.nanoTime();
System.out.println("Sorted: " + (end - start) + " ns, sum=" + sumSorted);
start = System.nanoTime();
long sumUnsorted = processAr