Avatar ·

为什么处理已排序数组比未排序数组更快?

大家好!我是一名初级Java开发者,遇到了代码中的奇怪行为。我有一个简单的性能测试:对数组中大于某个阈值的所有元素求和。但我注意到,如果预先对数组进行排序,代码执行速度会快2-3倍!这是我的代码: ```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); } // 对数组进行排序 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