لماذا تكون المعالجة الشرطية للمصفوفة المرتبة أسرع من غير المرتبة؟
مرحباً بالجميع! أنا مبتدئ في 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);
// Fill array with random values from 0 to 255
for (int i = 0; i < arraySize; i++) {
data[i] = random.nextInt(256);
}
// Create a copy and sort it
int[] sortedData = data.clone();
Arrays.sort(sortedData);
// Test unsorted array
long start = System.nanoTime();