"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" क्या बनाता है?