# Performance of loops (A caching question)

Consider below two C language functions to compute sum of elements in a 2D array. Ignoring the compiler optimizations, which of the two is better implementation of sum?

`// Function 1` `int` `fun1(` `int` `arr[R][C])` `{` ` ` `int` `sum = 0;` ` ` `for` `(` `int` `i=0; i<R; i++)` ` ` `for` `(` `int` `j=0; j<C; j++)` ` ` `sum += arr[i][j];` `}` ` ` `// Function 2` `int` `fun2(` `int` `arr[R][C])` `{` ` ` `int` `sum = 0;` ` ` `for` `(` `int` `j=0; j<C; j++)` ` ` `for` `(` `int` `i=0; i<R; i++)` ` ` `sum += arr[i][j];` `}` |

In C/C++, elements are stored in Row-Major order. So the first implementation has better spatial locality (nearby memory locations are referenced in successive iterations). Therefore, first implementation should always be preferred for iterating multidimensional arrays.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.