Avatar ·

ما معنى الكود "cache-friendly" وكيفية كتابة برامج فعالة بلغة C++؟

مرحبًا بالجميع! أنا مطور C++ مبتدئ، أكتب برامج صغيرة لمعالجة البيانات. مؤخرًا صادفت مصطلح "cache-friendly" (صديق للذاكرة المؤقتة) وأدركت أن برامجي ربما تعمل بشكل أبطأ مما ينبغي. لدي مثال بسيط: أقوم بمعالجة مصفوفة ثنائية الأبعاد بحجم 10000×10000. الطريقة الأولى — الاجتياز عبر الصفوف (الحلقة الخارجية i، الداخلية j). الطريقة الثانية — الاجتياز عبر الأعمدة (الحلقة الخارجية j، الداخلية i). على حاسوبي المحمول، الطريقة الأولى تنفذ في 0.3 ثانية، بينما الثانية في 2.5 ثانية! الفرق يقارب 8 مرات، رغم أن الكود يفعل نفس الشيء. إليك الكود للتوضيح: ```cpp const int N = 10000; int arr[N][N]; // الخيار 1: عبر الصفوف (سريع) for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { arr[i][j] = i * j; } } // الخيار 2: عبر الأعمدة (بطيء) for (int j = 0; j < N; j++) { for (int i = 0; i < N; i++) { arr[i][j] = i * j; } } ``` لماذا هذا الفرق الهائل؟ ما الذي يجعل الكود "c