java - Why is processing a sorted array faster than processing an unsorted array? - Stack Overflow
CSAPP 第5.11.2章节分支预测
双层 for 循环,大循环要在内层,这样分支预测错误次数少。
下面代码大概会判断错误100次,如果换过来则判断错误100000次
for(int i = 0; i < 100; i++){
for(int j = 0; j < 100000; j++){
}
}
计算数组中小于100的数之和,如果是有序数组,则性能更好,因为 if(a < 100) 分支预测结果总是和实际结果一致。
for(int i = 0; i < 10000; i++){
if(arr[i] < 100) {
sum += arr[i];
}
}