![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
![]()
Здравствуйте.
Есть общая структура для хранения информации о всех объектах, скажем data, в ней содержатся разные переменные и т.п. Необходимо поделить использование структуры на 4 разных группы (предметы, персонажи, и т.п.). Здесь и вопрос, как лучше это сделать? Использовать один массив, с обращением к его областям через указатели, или массив под каждую группу? data dat[1000]; data *p1 = dat[0]; data *p2 = dat[250]; data *p3 = dat[500]; data *p4 = dat[750]; или data dat1[250]; data dat2[250]; data dat3[250]; data dat4[250]; С точки зрения целесообразности и производительности, какой вариант для компьютера лучше? Ибо, в плане удобства, в обоих вариантах создается отдельное средство управления (указатель, или персональный массив). |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
![]() Код:
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
![]()
&dat[0];
вопрос в силе |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 22.12.2011
Сообщений: 378
|
![]()
Ну мне кажется что более экономичный 2 вариант. Просто указатель тоже занимает память и получается:
В первом варианте занимаемая память: sizeof(p1) * 4 + 1000 * sizeof(data) А во втором: (sizeof(data) * 250) * 4 = sizeof(data) * 1000 Вроде так.
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 09.07.2013
Сообщений: 249
|
![]()
Можно ещё чуток поднапрячься и реализовать иерархическую базу данных в виде структуры:
Код:
do not use your brain
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
массив под каждую группу
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
![]() Код:
Во втором просто массивы, т.е затрат меньше. |
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]() Цитата:
Первый вариант для этого становится избыточным. |
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 11.01.2013
Сообщений: 149
|
![]()
Про какие затраты памяти тут идет речь, даже если взять 1 случай:
Код:
Код:
Может это и чушь, но это моя чушь и я ее никому не отдам.
Последний раз редактировалось Shad0wF1rst; 17.09.2013 в 10:32. |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
![]()
Благодарю всех, кто подключился к обсуждению
![]() На самом деле, интересует вопрос процессорного времени, то, как компьютеру будет проще. Я смотрю предложили вариант "иерархической базы", интересно, первый раз такое вижу. Т.е. предлагается вместо обращения к структурам массива в цикле, по очереди (1 2 3 4 5), будет браться прямой адрес следующей структуры, из текущей? Это интересно, ибо обращение к элементам массива будет проводиться в цикле десятки раз в секунду (проверка объектов, их координат, столкновений, проверка флагов, эвентов и т.п.). Таким образом, если думать о таком варианте, здесь логичнее цельный массив (1000), с указателями. Целесообразно ли использовать иерархическую структуру? Намного ли разница в производительности? Если десятки раз в секунду, в цикле, будут прокручиваться 500-1000 элементов? |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Гауссово распределение, С# | alik98 | Помощь студентам | 0 | 24.02.2013 17:37 |
распределение по матрице | mazak | Общие вопросы C/C++ | 0 | 19.08.2012 11:49 |
Распределение в памяти в СИ | marsh123 | Общие вопросы C/C++ | 1 | 17.11.2011 16:35 |
Экспоненциальное распределение на C++ | RayGGG | Фриланс | 1 | 28.02.2011 14:39 |
Экспоненциальное распределение на C++ | RayGGG | Помощь студентам | 0 | 25.02.2011 18:13 |