Avatar ·

Warum ist die Verarbeitung eines sortierten Arrays schneller als die eines unsortierten?

Hallo, Kollegen! Ich bin ein Java-Anfänger und bin auf ein seltsames Verhalten meines Codes gestoßen. Ich habe einen einfachen Performance-Test: Ich summiere alle Elemente eines Arrays, die größer als ein bestimmter Schwellenwert sind. Aber mir ist aufgefallen, dass der Code 2-3 Mal schneller läuft, wenn das Array vorher sortiert wird! Hier ist mein Code:\n\n```java\npublic class BranchPredictionTest {\n public static void main(String[] args) {\n int size = 100000;\n int[] data = new int[size];\n Random rand = new Random();\n for (int i = 0; i < size; i++) {\n data[i] = rand.nextInt(256);\n }\n\n // Sortieren des Arrays\n int[] sorted = data.clone();\n Arrays.sort(sorted);\n\n long start = System.nanoTime();\n long sumSorted = processArray(sorted