В общем, мне бы хотелось узнать все плюсы и все минус хеш-таблицы в сравнении с обузом массивных переменных.
Пока из минусов могу сказать то, что получается больше строк кода практически в 1.5 раз, а в системах с 0.01 таймерами это лишняя нагрузочка и минус фпс.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
16
в системах с 0.01 таймерами главный минус хештаблиц и глобалок - это системы с 0.01 таймерами.
такая частота не нужна в 99% случаев, а с оставшимся 1% наверняка работают те, кто такими вопросами не задается
хеш удобнее, потому что можно ложить данных по ключу = хендлу объекта, что гарантирует его созхранность. массив удобнее ТОЛЬКО потому, что слегка быстрее. если у тебя просадки фпс суровые - можешь попробовать массивы. если нет - используй хеш и будь счастлив.
ну а если ты работаешь в редакторе, есть какие-то структуры в псевдоязыке vjass, которые имитируют ту же хештаблицу на обычных массивах
27
У обычных массивов от переменной, то там индекс не такой большой (от -8192 до 8192). Нельзя туда ни хэндлы всунуть, ни равкоды. Равкод к счастью можно заменить на тип переменную как тип юнита. А в хэш-таблицу все влезает, и норм. Обычные массивы неудобны еще тем, что там нельзя аттачить, приходится делать более сложные конструкции с пробегом цикла и проверками, чтобы найти нужный индекс. А вот в хэше можно сразу лепить аттач (по хэндлу юнита).
Различны способы хранения - (удобно когда массивов больше - удобно сделать сложную конструкцию). В более простых конструкциях этого не нужно.
xgm.guru/p/100/183113 массивы хэша
xgm.guru/p/100/183650 пробовал реализовать с помощью неких констант, когда не хватало ячеек
16
Steal nerves:
У обычных массивов от переменной, то там индекс не такой большой (от -8192 до 8192).
вообще-то отрицательных индексов у массивов нет, 0..8191
32
Steal nerves:
У обычных массивов от переменной, то там индекс не такой большой (от -8192 до 8192). Нельзя туда ни хэндлы всунуть, ни равкоды. Равкод к счастью можно заменить на тип переменную как тип юнита. А в хэш-таблицу все влезает, и норм. Обычные массивы неудобны еще тем, что там нельзя аттачить, приходится делать более сложные конструкции с пробегом цикла и проверками, чтобы найти нужный индекс. А вот в хэше можно сразу лепить аттач (по хэндлу юнита).
Различны способы хранения - (удобно когда массивов больше - удобно сделать сложную конструкцию). В более простых конструкциях этого не нужно.
xgm.guru/p/100/183113 массивы хэша
xgm.guru/p/100/183650 пробовал реализовать с помощью неких констант, когда не хватало ячеек
А и ненужно в массивы засовывать хендлы, структуры vjass'a чуть чуть побыстрее, ну и малость удобнее в написании, писанины чуть меньше, если ты работаешь с тучей данных а не 3-5 переменных типа кастер, урон, расстояние...
Есть системы без хештаблицы, но они не такие уж универсальные, и нужны реально в редких случаях, но можно юзать для тех же спеллов, пример такой системы Xattach (гугл в помощь), там целлая группа массивов.
20
массив удобнее ТОЛЬКО потому, что слегка быстрее
При использовании БД на массивах прозрачны действия движка(как реализован интерфейс работы с хт - одним близзам известно). Сразу ясно какой из вариантов реализации эффективнее
16
Diaboliko:
массив удобнее ТОЛЬКО потому, что слегка быстрее
При использовании БД на массивах прозрачны действия движка(как реализован интерфейс работы с хт - одним близзам известно). Сразу ясно какой из вариантов реализации эффективнее
?? обычное дерево. что конкретно тебя смущает-то? неважно, что под капотом, если оно работает без ошибок
32
DracoL1ch, Просто бытует мнение что у хт не пофикшена коллизия, но так доказательств этому нету....
30
Да там StringHash( ) жрёт больше, чем все перезаписывания в массивах вместе взятые (кстати, на память не влияет значение переменной, влияет только факт её проинициализированности). Короче, юзайте структуры (и читайте русский мануал по ним), это удобнее хранения данных в хэше или массиве, и по факту является работой с массивами напрямую. И быстро, и удобно.
26
Clamp, что есть "проинициализированность переменной" ? х)
Clamp, чем отличаются структуры (которые есть только на момент их написания, но их попросту не существует в скрипте) от массивов (которые просто есть и точка)?
32
Extremator:
Clamp, что есть "проинициализированность переменной" ? х)
Clamp, чем отличаются структуры (которые есть только на момент их написания, но их попросту не существует в скрипте) от массивов (которые просто есть и точка)?
Интерфейсом и системой слежения за тем занята или свободна та или иная ячейка + защита от переполнения массива, не хотите vjass пишите все сами...
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.