я понимаю очень высокую производительность матрицы между двумя кодами
Код 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;
}
}
Кодекса2:
#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;
}
}
Единственное различие между ними заключается в порядке индекса ( ij и ji ), и они имеют большую разницу в производительности. Почему это случилось?
Код 1 исполнения
Код 2 исполнения
После нескольких пробежек среднее время:
Код1: 1,554 с
Код2: 2.592