MyTetra Share
Делитесь знаниями!
Двумерный массив
Время создания: 29.12.2016 15:25
Текстовые метки: си
Раздел: Computer - Programming - C


Сомнительно, но:

> в каком случае получение конкретного элемента будет выполнено быстрее?
Время получения одного элемента не должно тебя беспокоить. Важен порядок доступа. В общем случае, быстрее будет тот вариант, в котором случится меньше кеш промахов. Например при такой организации цикла подсчета суммы:

int a1[WIDTH][HEIGHT];

int a2[WIDTH * HEIGHT];

for (x = 0; x < WIDTH; x++)

for (y = 0; y < HEIGHT; y++)

//s1 += a1[x][y];

s2 += a2[y * WIDTH + x];

s2 будет считаться в 5-10 раз дольше чем s1. Если же поменять for-ы местами - ситуация поменяется на противоположную. При правильной (последовательной) организации доступа к данным оба метода будут выполняться приблизительно одинаково и городить огород с "ручной" выборкой по одномерному индексу с по сути двумерного массива особого смысла нет.

 
MyTetra Share v.0.53
Яндекс индекс цитирования