# Performance analysis of Row major and Column major order of storing arrays in C

In computing, row-major order and column-major order are methods for storing multidimensional arrays in linear storage such as random access memory.

The two mentioned ways differ from each other with respect to the order in which elements are stored contiguously in the memory. The elements in row-major order are arranged consecutively along the row and that in the column-major order are arranged consecutively along the column. While the terms allude to the rows and columns of a two-dimensional array, i.e. a matrix, the orders can be generalized to arrays of any dimension by noting that the terms row-major and column-major are equivalent to lexicographic and lexicographic orders, respectively.

Below program illustrates that row major order storing of arrays in C is more efficient than column-major order(though Pascal and Fortran follows column major order):

`#include <stdio.h> ` `#include <time.h> ` `int` `m[9999][999]; ` ` ` `void` `main() ` ` ` `{ ` ` ` `int` `i, j; ` ` ` `clock_t` `start, stop; ` ` ` `double` `d = 0.0; ` ` ` ` ` `start = ` `clock` `(); ` ` ` `for` `(i = 0; i < 9999; i++) ` ` ` `for` `(j = 0; j < 999; j++) ` ` ` `m[i][j] = m[i][j] + (m[i][j] * m[i][j]); ` ` ` ` ` `stop = ` `clock` `(); ` ` ` `d = (` `double` `)(stop - start) / CLOCKS_PER_SEC; ` ` ` `printf` `(` `"The run-time of row major order is %lf\n"` `, d); ` ` ` ` ` `start = ` `clock` `(); ` ` ` `for` `(j = 0; j < 999; j++) ` ` ` `for` `(i = 0; i < 9999; i++) ` ` ` `m[i][j] = m[i][j] + (m[i][j] * m[i][j]); ` ` ` ` ` `stop = ` `clock` `(); ` ` ` `d = (` `double` `)(stop - start) / CLOCKS_PER_SEC; ` ` ` `printf` `(` `"The run-time of column major order is %lf"` `, d); ` `} ` |

*chevron_right*

*filter_none*

**Output:**

The run-time of row major order is 0.067300 The run-time of column major order is 0.136622

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

## Recommended Posts:

- Number of positions with Same address in row major and column major order
- Find trace of matrix formed by adding Row-major and Column-major order of same matrix
- Search in a sorted 2D matrix (Stored in row major order)
- Sort the major diagonal of the matrix
- Swap major and minor diagonals of a square matrix
- Print all elements in sorted order from row and column wise sorted matrix
- heapq in Python to print all elements in sorted order from row and column wise sorted matrix
- Maximum sum by picking elements from two arrays in order
- Maximum sum of increasing order elements from n arrays
- Maximum array from two given arrays keeping order same
- Merging two unsorted arrays in sorted order
- Number of ways to merge two arrays such retaining order
- Sorting rows of matrix in ascending order followed by columns in descending order
- Sorting rows of matrix in descending order followed by columns in ascending order
- Sort first k values in ascending order and remaining n-k values in descending order