¿Por qué el procesamiento condicional de un array ordenado es más rápido que el de uno desordenado?
¡Hola a todos! Soy nuevo en Java y me encontré con un comportamiento de rendimiento muy extraño. Tengo un código simple que suma los elementos de un array, pero solo si son mayores que un cierto umbral. Noté que si el array se ordena previamente, el código se ejecuta aproximadamente 2-3 veces más rápido. ¡Aquí está mi código de prueba:
import java.util.Arrays;
import java.util.Random;
public class BranchPredictionTest {
public static void main(String[] args) {
int arraySize = 100000;
int[] data = new int[arraySize];
Random random = new Random(12345);
// Llenamos el array con valores aleatorios de 0 a 255
for (int i = 0; i < arraySize; i++) {
data[i] = random.nextInt(256);
}
// Creamos una copia y la ordenamos
int[] sortedData = data.clone();
Arrays.sort(sortedData);
// Probamos el array desordenado
long start = System.nanoTime();