Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2013, 10:51   #11
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Благодарю всех, кто подключился к обсуждению Вообще можно сказать, при современных вычислительных скоростях, рассуждение что будет проще, может показаться пустяком, но тут дело интереса и принципа.

На самом деле, интересует вопрос процессорного времени, то, как компьютеру будет проще. Я смотрю предложили вариант "иерархической базы", интересно, первый раз такое вижу. Т.е. предлагается вместо обращения к структурам массива в цикле, по очереди (1 2 3 4 5), будет браться прямой адрес следующей структуры, из текущей? Это интересно, ибо обращение к элементам массива будет проводиться в цикле десятки раз в секунду (проверка объектов, их координат, столкновений, проверка флагов, эвентов и т.п.).

Таким образом, если думать о таком варианте, здесь логичнее цельный массив (1000), с указателями.

Целесообразно ли использовать иерархическую структуру? Намного ли разница в производительности? Если десятки раз в секунду, в цикле, будут прокручиваться 500-1000 элементов?
Сейчас более внимательно прочитал ваш самый первый пост, где говорили для чего вам это нужно. Так как там были перечислены такие не связанные друг с другом вещи как:
Цитата:
(предметы, персонажи, и т.п.)
то соответственно лучше создать все таки разные массивы. На производительность это не повлияет, так как у оптимизации другие критерии, а то что это обеспечит удобство обращения это факт, если учесть что у этих категорий будут совершенно разные свойства.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Старый 17.09.2013, 11:32   #12
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Их может связывать только то, что они (игроки, предметы, лежащие на карте, другие динамические объекты) будут десятки раз в секунду проверяться на столкновения, и прочие условия.

Другое же дело, предметы в инвентаре, или на складе. Они лежат себе и лежат, их ни кто не трогает и на карте их нет. Их не надо проверять десятки раз в секунду... хотя, и здесь можно понапридумывать, например, если надо чтобы предмет в сумке был активен и что-то делал Но это уже другой вопрос..

А так, у всех объектов, что на карте, есть общее свойство - они на карте, и их надо проверять. Если использовать общую структуру, будут такие приколы, как "хп у предмета".. или если что-то добавить персонажу, то такое же свойство автоматически становится доступно и предмету на карте. Такой же метод я нашел в исходниках Quake 3 Arena, когда мод писал там общая база для всех "сущностей" на карте, и не важно, персонаж это, предмет, или летящая ракета. Видимо в таком методе есть что-то полезное.
Артэс вне форума Ответить с цитированием
Старый 17.09.2013, 11:43   #13
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Их может связывать только то, что они (игроки, предметы, лежащие на карте, другие динамические объекты) будут десятки раз в секунду проверяться на столкновения, и прочие условия.
Другое же дело, предметы в инвентаре, или на складе. Они лежат себе и лежат, их ни кто не трогает и на карте их нет. Их не надо проверять десятки раз в секунду... хотя, и здесь можно понапридумывать, например, если надо чтобы предмет в сумке был активен и что-то делал Но это уже другой вопрос..
Это понятно, но это же не свойство объекта, а действие. Тем более вы не будете делать одну структуру где у вас в куче будут характеристика персонажа с характеристикой объекта. Вам по-любому понадобится две структуры, в один массив то вы их уже никак не запихнете.

Цитата:
А так, у всех объектов, что на карте, есть общее свойство - они на карте, и их надо проверять. Если использовать общую структуру, будут такие приколы, как "хп у предмета".. или если что-то добавить персонажу, то такое же свойство автоматически становится доступно и предмету на карте. Такой же метод я нашел в исходниках Quake 3 Arena, когда мод писал там общая база для всех "сущностей" на карте, и не важно, персонаж это, предмет, или летящая ракета. Видимо в таком методе есть что-то полезное.
А то что они все на карте это не помешает им находится в разных массивах. И поверьте на производительности это никак не скажется. База может быть и общая, но я подозреваю что хранятся они в разных таблицах это базы.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Старый 17.09.2013, 13:54   #14
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Но ведь обратиться по адресу быстрее, чем через индекс массива, причем еще если этих массивов несколько. Разве нет?
Артэс вне форума Ответить с цитированием
Старый 17.09.2013, 15:34   #15
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Артэс, по-моему ты фигней маешься) Я думаю так, потому что:
1) ты не планируешь ничего распараллеливать, поэтому тебе не нужно заботиться о "ложном разделении", перебрасывании кэша и прочих артефактах
2) тебе не нужно, чтобы объекты разных типов попадали в одну кэш-линию
3) особенность реализации должна быть сокрыта от пользователя, а значит поменять ее в случае чего не составит проблем
4) ты не уверен, что именно это будет узким местом в твоем коде.

Я считаю, что тебе прежде чем задумываться обо всем этом, надо для начала просто написать какой-нибудь прототип и его опробовать. Лишняя оптимизация на этапе проектирования лишь вредит. Все равно будешь сто раз все переписывать)

Цитата:
Но ведь обратиться по адресу быстрее, чем через индекс массива, причем еще если этих массивов несколько. Разве нет?
По сути один хрен.
still_alive вне форума Ответить с цитированием
Старый 17.09.2013, 18:28   #16
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Но ведь обратиться по адресу быстрее, чем через индекс массива, причем еще если этих массивов несколько. Разве нет?
Указатели скорее для большого количества данных большого объёма, которые надо както связать, тогда выгода будет тем ощутимее, чем больше количество данных и их объём.
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 17.09.2013, 23:10   #17
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Кащей,рекомендую вам почитать что нибудь из цикла "дата ориентированное программирование".
_Bers вне форума Ответить с цитированием
Старый 17.09.2013, 23:12   #18
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Но ведь обратиться по адресу быстрее, чем через индекс массива, причем еще если этих массивов несколько. Разве нет?
У вас есть указатель на начало группы.

Как вы получите адрес конкретного элемента группы?

Внезапно, вы используете указатель + смещение. Чем и является индекс.

Поэтому, забейте и не парьтесь. Оптимизиции такого уровня - это задача для компилятора, а не для программиста.
_Bers вне форума Ответить с цитированием
Старый 18.09.2013, 19:03   #19
Кащей
Форумчанин
 
Аватар для Кащей
 
Регистрация: 09.07.2013
Сообщений: 249
По умолчанию

Цитата:
Сообщение от _Bers Посмотреть сообщение
Кащей,рекомендую вам почитать что нибудь из цикла "дата ориентированное программирование".
Я ничего такого не нашол.
do not use your brain
Кащей вне форума Ответить с цитированием
Старый 19.09.2013, 20:32   #20
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Кащей Посмотреть сообщение
Я ничего такого не нашол.

http://cheremin.blogspot.ru/2010/02/...ogramming.html
http://gamesfromwithin.com/managing-data-relationships
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Гауссово распределение, С# 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