производительность матрицы в C - PullRequest
0 голосов
/ 07 ноября 2018

я понимаю очень высокую производительность матрицы между двумя кодами

Код 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...