Сообщение от impersonalis
впринципе ЛЮБУЮ систему модно одномерным описать, только враппер работы с этим удовьствием будет работать ещё медленне умножений. А скорость умножений, кстати, не окажет уж очень сильного искажения ФПС. В общем как с ГОТО - толку мало, но некторые юзают. ИМХО.
|
я так и думал, что у нас получится спор... попробую выспорить свою точку зрения, хотя о стилях проганья как и о вкусах не спорят.
конечно если при любом вычислении юзать постоянно функцию поиска то ессно метод мастдай.
Многоуровневая статичная система: для каждого элемента оставляем поле для НОМЕРА элемента родителя в массиве.
Многоуровневая динамичная система: в случае фрагментации элементы НЕ двигать + делать поле для номера родителя.
Многоуровневая динамичная система с неограниченным количеством "детей":
1. сделать количество свободных элементов для максимально возможного количества детей.
2. заюзать дополнительный двумерный массив а в первом писать номер индекса второго массива где искать номера детей.
конечно все можно и через одномерный массив юзать, но давайте не будем кривить логикой типа если не черное значит белое... юзать одномерный массив нерентабельно, нагрузочно (всякими системами переадресации и возможно поиском)... трехмерные и выше слишком накладно при вычислениях адреса элемента, хоть на сегодняшний день команда LEA выполняется за один такт и при этом в любом конвейере, но не думаю что компилятор заюзает ее при вычислении адреса трехмерного массива... опять-же зависит от задачи, если не часто обращаешься к элементам, то флаговая промышленность страны не обделит, юзайте массивы, а если хранить координаты и свойства точек трехмерной модели (а вдруг и четырехмерной) и делать всякие трансформации, повороты навороченные смещения текстур и др. то лучше заюзать двумерные...
конечно это не добавит 20 или 30 ФПС, но когда борятся за каждый ФПС, то это поможет сэкономить пару...