Avatar ·

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