В общем вопрос такой, что будет эффективнее с точки зрения производительности, при наличии 10 активных игроков: создать 1 хэш-таблицу для всех, или отдельные хэш-таблицы для каждого?
Знаю, что переключение между таблицами будет занимать время, однако чат ГПТЭ говорит о том, что лучше сделать отдельные для всех, но я ему не верю. Взываю к мудрости предков.

Deepire, Да кого ты слушаешь. Какой то недоИИ, неспособный отличить фейк от достоверной информации, наплел тебе пурги. Если хочешь информацию для героя сохранять, то сохраняй на айди юнита, а дочерний через свой индекс (я использую StringHash())
Одновременно в варике произойти ничего не может, варик однопоточен. Делай через 1 хеш и не еби мозг ни себе, ни другим.
`
ОЖИДАНИЕ РЕКЛАМЫ...
10
Смотря для каких целей ты их использовать будешь. Спокойно карты делают и играют и с одним хешом. У каждого объекта свой айди, а дочерний ключ как напишешь чтоб не совпал. + мороки не будет, в какой хеш ты записал данные.
Вот в крузерах хеш таблиц более 20, но они используются как... двумерные массивы. Карта лагает только если 100500 ракет запустить.
23
1 хэша вполне хватит. Необязательно двух.
Это ведь таблица, буквально. Значения под ячейки одинаковые везде, например, тот же ид хэндла, потому смысла отдельно таблицы городить нет)
а с точки зрения производительности обычный массив быстрее, нет вызовов функций
можно и двумерно сделать как set ArrayName [400+5] только количество размещаемых данных резко ограничится
Ответы (6)
1
EugeAl, Это я знаю, но вот у меня допустим в момент выбора героя сетается вся нужная ему инфа в хэш таблицу, эта хэш таблица может быть одна, и когда другой игрок выбирает героя я могу просто увеличивать ключ, либо я могу создавать отдельные хэш таблицы для каждого игрока и сетать туда героев, не запариваясь увеличением ключа для сета инфы героя. На сколько мне известно переключение между таблицами занимает время, т.е лучше обращаться к одной и той же таблице, но чат ГПЭТ сослался на то, что при большом количестве игроков одновременно обращающихся к таблице, может создаться некая "Гонка" что приведёт к задержкам. (учитывая, что это чат ГПТЭ мини и он часто тупит я ему не сильно верю, вот и решил уточнить.)
10
Принятый ответ
Deepire, Да кого ты слушаешь. Какой то недоИИ, неспособный отличить фейк от достоверной информации, наплел тебе пурги. Если хочешь информацию для героя сохранять, то сохраняй на айди юнита, а дочерний через свой индекс (я использую StringHash())
Одновременно в варике произойти ничего не может, варик однопоточен. Делай через 1 хеш и не еби мозг ни себе, ни другим.
замечание от EugeAl: Всё ок, но мат попрошу убрать. Здесь так не принято.
23
Deepire, я видел, как этот чат ГПТ пишет джасс, поржал и всё понял) не стоит ему верить)
Делай, в общем, через 1 хэш и всё ок будет)
32
nazarpunk, Оптимизаторы вроде давно умеют StringHash заменять на уникальный ключ, при оптимизации карты. Не вижу проблемы.
11
Наверное, как и любая база данных требует шардирования при большом количестве записей в таблице для оптимизации поиска. Но при условии, что ты знаешь номер id. Первые сто тысяч(по id) пишешь в одну таблицу вторую сотню тысяч(по id) в другую. Но по номеру. И производительность возрастает. Если записей мало то одной хеш-таблицы за глаза.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.