为什么处理已排序数组比未排序数组更快?
大家好!我是一名初级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