чел, который ковырял таблицы, остался недоволен их качеством, ну и то, что ключи делаются по битовому (userKey & parentUniqueKey) вместо реальной хеш-функции, что повышает шанс коллизий в теории. Но я сам ни разу не сталкивался с коллизиями, хз
стоп, а каким образом кол-во операций, ограниченных виртуалкой жасса, говорит о трудозатратах перебора внутренних списков? JASS OPlimit считает только кол-во операций байт-кода, скомпилиированного из JASS-кода, внутренняя кухня никак не влияет - будь то тяжеленная функция создания юнита или крохотная функция установки владельца предмету, они займут 10 и 5 байт-слов соответственно, однако производительность второй не в пример выше, потому что операций там - просто сдвиг битов.
я глянул методы Load*() и вижу, что там идет перебор списка по листьям (чайлд) ветки (родителю) дерева, пока не встретится элемент с нужным ID ячейки. так что чем больше данных в таблице, тем дольше перебор
Точно помню, что хештаблица варкрафта не эквивалентна настоящей, там даже по ключам ограничения есть, но деталей не помню, для кодера жасс это неважно.
Мы не экономим парентов, мы стараемся, чтобы корзин для поиска было меньше, чем яиц в них. На вскидку это связный список, а не массив, но я не эксперт в реализациях, да и исходников не имею
да, массив постоянно будет делать reAllocMem , если текущий размер окажется мельче, чем номер ячейки. Поэтому, если массив будет часто писаться с инкрементом, то выгоднее сперва прописать в последнее допустимое значение (8191 для 26 патча) типа MyArray[8191]=0
чисто чтобы его по памяти не возили туда-сюда каждые X значений (не смотрел, сколько изначально выделяется)
я вот у себя пофиксил такую же байду с таблицей строк. игра выделяет по 16 ячеек под строки, а у меня в доте они генерируются десятками в секунду. Каждую секунду игра делала ре-аллок памяти, а к середине игры там уже несколько мб таблица туда-сюда ездила. Сделал аллок в разы больше - и таблица всего 2 раза переедет за 40 минут игры максимум. Экономия тактов налицо.
Хеш-таблицы вообще не являются массивами, гугл в помощь, поэтому там об этом думать не стоит. Стоит думать лучше о том, чтобы первичных (родительских) ключей было меньше, чем вторичных, чисто исходя из того, что в этом случае перебор по таблице окажется быстрее
а у меня есть дота и лод, где я это испытывал еще несколько лет назад, и мессаги, отправленные в общий чат через GetLocalPlayer() не отображались. потому что в реплее очень специфично определяется локал плеер. в моем случае надежность бждебага неоспорима, а про оплимит я давным давно забыл, и вам советую
показ текстов через GetLocalPlayer() не отображается в реплее или работает через раз, поэтому используй только если любишь боль. Ничего лучше bjdebug не придумали, и страшного в нём тоже ничего нет
юниты спавнятся на свободных точках, а не строго там, где ты им сказал. юзай SetUnitX/Y после создания, чтобы поставить на нужную точку
так они и не собираются выпускать что-то материальное под твоим лейблом, а вот карту могут взять себе и дорабатывать на своё усмотрение, а тебе спасибо за автоматическое разрешение на это
всем похер, что вы сделаете никому не нужную копию карты из СК2
но если вдруг она наберет популярность, вас выгонят с батлнета, и будут банить карты по хешу, если те будут попадаться на глаза. никто намеренно не будет их искать, само собой.
указано, что любая карта будет собственностью близзард. создал карту по своему "разрешению" = передал права на это разрешение близзардам. Им, конечно, похер, но как факт.
я ваще не понимаю, в каком ты мире живешь.
у тебя не исходники, у тебя работа с текущей либой игры, и никаких объхектов нет, кроме тех, что создаешь ты. и логика инвентаря тоже уже залинейнена вся в либу игры. никаких у тебя объектов нет. ты должен всё самостоятельно пофиксить во всех местах, где обращаются к твоему измененному месту
ты щас о чем? к этому классу обращаются из разных мест и ожидают строго 6 объектов в списке, т.е. все циклы задействованные нужно обновить - изменить все 100500 смежных функций
» WarCraft 3 / Краш карты при загрузке
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
Ред. DracoL1ch
» WarCraft 3 / Проиграть анимацию наоборот
» WarCraft 3 / Выделение памяти в хеш-таблице
» WarCraft 3 / Выделение памяти в хеш-таблице
Ред. DracoL1ch
» WarCraft 3 / Выделение памяти в хеш-таблице
я глянул методы Load*() и вижу, что там идет перебор списка по листьям (чайлд) ветки (родителю) дерева, пока не встретится элемент с нужным ID ячейки. так что чем больше данных в таблице, тем дольше перебор
» WarCraft 3 / Выделение памяти в хеш-таблице
» WarCraft 3 / Выделение памяти в хеш-таблице
Мы не экономим парентов, мы стараемся, чтобы корзин для поиска было меньше, чем яиц в них. На вскидку это связный список, а не массив, но я не эксперт в реализациях, да и исходников не имею
» WarCraft 3 / Выделение памяти в хеш-таблице
Ред. DracoL1ch
» WarCraft 3 / Выделение памяти в хеш-таблице
чисто чтобы его по памяти не возили туда-сюда каждые X значений (не смотрел, сколько изначально выделяется)
я вот у себя пофиксил такую же байду с таблицей строк. игра выделяет по 16 ячеек под строки, а у меня в доте они генерируются десятками в секунду. Каждую секунду игра делала ре-аллок памяти, а к середине игры там уже несколько мб таблица туда-сюда ездила. Сделал аллок в разы больше - и таблица всего 2 раза переедет за 40 минут игры максимум. Экономия тактов налицо.
Хеш-таблицы вообще не являются массивами, гугл в помощь, поэтому там об этом думать не стоит. Стоит думать лучше о том, чтобы первичных (родительских) ключей было меньше, чем вторичных, чисто исходя из того, что в этом случае перебор по таблице окажется быстрее
» WarCraft 3 / Ошибка при загрузке сохраненной игры из за [HashTable]
» WarCraft 3 / Откуда могла взяться погрешность?
Ред. DracoL1ch
» WarCraft 3 / Откуда могла взяться погрешность?
» WarCraft 3 / Можно ли добавить больше способностей?
» WarCraft 3 / Ошибка при загрузке сохраненной игры из за [HashTable]
» WarCraft 3 / Можно ли добавить больше способностей?
Ред. DracoL1ch
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
но если вдруг она наберет популярность, вас выгонят с батлнета, и будут банить карты по хешу, если те будут попадаться на глаза. никто намеренно не будет их искать, само собой.
указано, что любая карта будет собственностью близзард. создал карту по своему "разрешению" = передал права на это разрешение близзардам. Им, конечно, похер, но как факт.
» WarCraft 3 / Бета версия Warcraft III Reforged 1.32
еще на пункте 3 ты должен был понять, где и кем тебя видят близзард
» WarCraft 3 / Инвентарь на +6 слотов
» WarCraft 3 / Инвентарь на +6 слотов
Ред. DracoL1ch
» WarCraft 3 / Инвентарь на +6 слотов
у тебя не исходники, у тебя работа с текущей либой игры, и никаких объхектов нет, кроме тех, что создаешь ты. и логика инвентаря тоже уже залинейнена вся в либу игры. никаких у тебя объектов нет. ты должен всё самостоятельно пофиксить во всех местах, где обращаются к твоему измененному месту
» WarCraft 3 / Инвентарь на +6 слотов
» WarCraft 3 / Инвентарь на +6 слотов