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();