为什么对已排序数组的条件处理比未排序数组更快?
大家好!我是Java新手,遇到了一个非常奇怪的性能问题。我有一个简单的代码,用于对数组元素求和,但仅当它们大于某个阈值时。我注意到,如果数组事先被排序,代码执行速度大约快2-3倍!以下是我的测试代码:
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);
// 用0到255的随机值填充数组
for (int i = 0; i < arraySize; i++) {
data[i] = random.nextInt(256);
}
// 创建副本并排序
int[] sortedData = data.clone();
Arrays.sort(sortedData);
// 测试未排序数组
long start = System.nanoTime();