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

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