Avatar ·

为什么对已排序数组的条件处理比未排序数组更快?

大家好!我是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();