Pourquoi le traitement conditionnel d'un tableau trié est-il plus rapide que celui d'un tableau non trié ?
Bonjour à tous ! Je suis débutant en Java et j'ai rencontré un comportement de performance très étrange. J'ai un code simple qui additionne les éléments d'un tableau, mais seulement s'ils dépassent un certain seuil. J'ai remarqué que si le tableau est préalablement trié, le code s'exécute environ 2 à 3 fois plus vite ! Voici mon code de test :
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);
// Remplir le tableau avec des valeurs aléatoires de 0 à 255
for (int i = 0; i < arraySize; i++) {
data[i] = random.nextInt(256);
}
// Créer une copie et la trier
int[] sortedData = data.clone();
Arrays.sort(sortedData);
// Tester le tableau non trié
long start = System.nanoTime();