Avatar ·

"cache-friendly" कोड का क्या मतलब है और C++ में कुशल प्रोग्राम कैसे लिखें?

सभी को नमस्कार! मैं एक शुरुआती C++ डेवलपर हूँ, डेटा प्रोसेसिंग के लिए छोटे प्रोग्राम लिखता हूँ। हाल ही में मैं "cache-friendly" (कैश के अनुकूल) शब्द पर आया और समझ गया कि मेरे प्रोग्राम शायद जितनी तेज़ी से चल सकते हैं, उससे धीमे चल रहे हैं। मेरे पास एक सरल उदाहरण है: मैं 10000x10000 का द्वि-आयामी array प्रोसेस करता हूँ। पहला तरीका — पंक्तियों के अनुसार traversal (बाहरी loop i के लिए, आंतरिक j के लिए)। दूसरा — स्तंभों के अनुसार traversal (बाहरी 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; } } ``` इतना बड़ा अंतर क्यों है? वास्तव में कोड को "cache-friendly" क्या बनाता है?