Donate to Grow My Website (1 $ please)

  • You may choose specified posts to show it as featured posts with automatic sliding effects and keep visitors engaged for long time on your sites.
  • Dec 12, 2018

    Performance of loops - Learnengineeringforu

    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

    No comments:
    Write Comments