i realize a verry large matrix performance between two codes
Code 1:
#include <stdio.h>
struct pix{
unsigned int r,g,b;
};
#define TAM 10000
struct pix color[TAM][TAM];
void main(){
int i,j;
for(i=0; i<TAM;i++)
for(j=0;j<TAM;j++){
color[i][j].r=
(
color[i][j].r+
color[i][j].g+
color[i][j].b
) / 3;
}
}
Code2:
#include <stdio.h>
struct pix{
unsigned int r,g,b;
};
#define TAM 10000
struct pix color[TAM][TAM];
void main(){
int i,j;
for(i=0; i<TAM;i++)
for(j=0;j<TAM;j++){
color[i][j].r=
(
color[j][i].r+
color[j][i].g+
color[j][i].b
) / 3;
}
}
The only difference between both is the index order(ij and ji) and they have a large performance difference. Why this happen ?
After a some runs, the avarage of time is:
Code1: 1.541s
Code2: 2.592s