Warum ist die bedingte Verarbeitung eines sortierten Arrays schneller als die eines unsortierten?
Hallo zusammen! Ich bin neu in Java und bin auf ein sehr seltsames Performance-Verhalten gestoßen. Ich habe einen einfachen Code, der die Elemente eines Arrays summiert, aber nur, wenn sie größer als ein bestimmter Schwellenwert sind. Mir ist aufgefallen, dass der Code etwa 2-3 mal schneller läuft, wenn das Array vorher sortiert wird! Hier ist mein Testcode:
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);
// Befülle das Array mit zufälligen Werten von 0 bis 255
for (int i = 0; i < arraySize; i++) {
data[i] = random.nextInt(256);
}
// Erstelle eine Ko