Bergi_Bear, 1.26a. Изначально идея заключалась в том, чтобы по данным теста подправить нагрузочные коэффициенты. Сейчас расчет этих коэффициентов сам по себе составляет отдельную проблему, замедляющую любую разработку в 3 раза.
Все упроститься, если будет быстрый доступ к любым объективным данным о текущей нагрузке.
На глаз фпс падает до нуля менее чем за 0.1с. Поэтому для прерывания исполнения нужно будет вызывать Get_stress() значительно чаще.
Проверил по другому. Да, обращение к заполненной hashtable чуть тяжелее, как и должно быть. В ходе экспериментов было выяснено:
Обращение к последним добавленным parentKey быстрее, чем к первым.
Обращение к последним childKey внутри одного parentKey быстрее, чем к первым добавленным.
При постоянном обращении к одному и тому же элементу со временем нагрузка выравнивается.
Падение производительности незначительное, обычно это 6-0 фпс.
Слишком много сходства между parent и child, надеюсь это хеш-таблица хеш-таблиц, а списки там лишь для решения коллизий, как и сказал ScorpioT1000 (что объясняет пункт 1 и 2)
Оцениваю не время, а количество операций. То есть: если блок кода больше нагружает, то внутри одного потока он выполнится меньшее количество раз.
Тест проводился следующим образом:
Сначала проверил, что и parentKey и childKey принимают все доступные int-ы.
Дальше нужно было наполнить таблицу и посмотреть на разницу в работе. В процессе выяснилось, что значения перестали сохраняться. Экспериментально были вычислен порог для parentKey. Далее проверил, что childKey ведут себя так же и каждый родительский ключ может иметь не более 18747 дочерних.
Когда мы убедились, что hashtable наполняется корректно, можно начать нагрузочное тестирование. Максимальное кол-во элементов 74985 (все доступные parentKey и три полных childKey) и варьировалось в зависимости от цели конкретного теста.
Нагрузочное тестирование.
4.1 Запоминаем количество успешных обращений к пустой hashtable внутри одного потока.
4.2.1 Заполняем все доступные parentKey.
4.2.2 Считаем количество обращений к первому, к последнему, к выбранным мной случайно. Получаем идентичное число операций с пустой hashtable.
4.3. Проверяем, нет ли встроенного кеширования. Обращаемся к случайному parentKey. Запускаем несколько раз, результат не меняется. (Либо обход списка инкапсулирован в виртуальной машине, либо это не список)
Идентично с childKey.
Таким образом, мы видим внешнее поведение, как оно внутри, узреть не удастся
8gabriel8, писать свою систему коллизий. Если все объекты можно представить кружками, то это не сложно, но с ней не будет взаимодействовать родной поиск пути. Или позаимствовать карту у летающих юнитов
Не знаю является ли она верной, но её написал Hanabishi, а не ноунейм, она выбрана лучшим ответом на этом сайте, никто из пользователей в комментариях (DracoL1ch, Doc, Clamp, nvc123, quq_CCCP) никак не опровергнул это
N7 Molot, понятно. Просто по видео кажется это значительно дольше, даже с ускорением. Для коррекции того же цвета, автор переходит в каждый элемент отдельно. Если что-то не понравилось, то менялся снова каждый элемент, вместо наложения цветокорректирующего фильтра на выбранные элементы. Не увидел горячие клавиши для быстрой работы. Иногда автору приходилось повторно смотреть необходимый материал. Неудивительно, когда названия выглядят как Material 0081A100. Не хватает небольших картинок, чтобы понимать, какой материал нужен. Чтобы посмотреть, что окрашивает данный элемент, автор был вынужден сначала выставлять какой-нибудь яркий цвет, смотреть, что изменилось, и только потом принимать решение, на какой цвет изменить. Рабочий способ, но костыль, поскольку отсутствует кнопка автовыделения выбранного элемента на модели.
Эти названные и другие неназванные мелочи способствуют экономии общего времени, подобно тому, как IDE с горячими клавишами автодополнения, быстрого перехода к реализации, рефакторингом отличается от notepad++. Если с нуля работа заняла у вас действительно 10 минут, то хорошо. В любом случае, очень здорово, что вы решили нам передать свой опыт
» WarCraft 3 / Преобразование индекса массива в число
» WarCraft 3 / Преобразование индекса массива в число
» Администрация XGM / Не сворачивается сообщение в личке
» WarCraft 3 / Как оценить фпс в мультиплеере?
На глаз фпс падает до нуля менее чем за 0.1с. Поэтому для прерывания исполнения нужно будет вызывать Get_stress() значительно чаще.
» WarCraft 3 / Видимость воды
» WarCraft 3 / Иконки на заказ
» WarCraft 3 / Выделение памяти в хеш-таблице
Ред. Vlod
» WarCraft 3 / Выделение памяти в хеш-таблице
» WarCraft 3 / как создать возможность проходить юнитам под платформой?
» WarCraft 3 / Выделение памяти в хеш-таблице
» WarCraft 3 / как создать возможность проходить юнитам под платформой?
Ред. Vlod
» WarCraft 3 / Выделение памяти в хеш-таблице
» WarCraft 3 / Выделение памяти в хеш-таблице
» WarCraft 3 / Выделение памяти в хеш-таблице
» Hunter or Victim / Hunter or Victim: Краткое руководство по выживанию
Ред. Vlod
» WarCraft 3 / Редактирование спецэффектов
Ред. Vlod
» WarCraft 3 / Редактирование спецэффектов
» WarCraft 3 / [Lua] Совместная работа над WC3 проектами
» WarCraft 3 / Можно ли добавить больше способностей?
Ред. Vlod
» WarCraft 3 / Баллиста
» WarCraft 3 / Можно ли добавить больше способностей?
» WarCraft 3 / Можно ли добавить больше способностей?
Ред. Vlod
» WarCraft 3 / Ошибка при загрузке сохраненной игры из за [HashTable]
Даже подтягивая из файла, все равно придется с ней работать
» Администрация XGM / Favicon
» XGM Team / 2019 to 2020 + Обновление Stage 6