Эффективность: 8 массивов против многомерного массива - PullRequest
1 голос
/ 02 ноября 2011

Что эффективнее? 8 массивов int8 myArrayx[100] или многомерный int8 myArray[8][100]? Я работаю с компилятором CCS для микроконтроллеров PIC Microchip, и мне нужно как можно быстрее писать в буфере, вот причина моего вопроса.

Ответы [ 3 ]

6 голосов
/ 02 ноября 2011

Я бы подумал, что многомерный массив будет быстрее.у вас гораздо больше шансов (возможно, гарантировано?) на размещение этих массивов в памяти в смежном пространстве, тогда как вы не можете быть уверены, что 8 отдельных массивов будут «близки» друг к другу в памяти - что повредит вашему местоположению ссылок.

3 голосов
/ 02 ноября 2011

Зависит от того, как распределены массивы. Если в куче, то один мультидим. Массив будет быстрее для многих целей из-за локальности ссылок, и вы можете выделить массив за один раз, что проще и влечет за собой меньше накладных расходов.

Если в стеке или static, фактически полученный двоичный код может быть точно таким же.

(Я не уверен, что у вас на самом деле куча в вашем устройстве, но я все равно решил упомянуть об этом;)

3 голосов
/ 02 ноября 2011

Зависит от того, к каким предметам вы бы обращались больше всего.Но, вероятно, это не имеет значения.Единственная разница заключается в расположении карты памяти, лежащей в основе.

...