Оптимизация

Старый ИИ каждый ход делал рсчёты по выбору лучшего места для города, застройки города и распределению рабочих между городами.
Новый ИИ расчеты по выбору лучшего места для города делает перед ходом поселенца, а расчеты по застройки города и распределению рабочих - перед ходом рабочих. После этого ИИ запоминает что он сделал соответствующие расчеты и больше их не делает. Но когда происходят события, которые могут повлиять на результат расчётов, ИИ запоминает что надо заново рассчитать лучшее место для города или улучшения вокруг определенного города.

Старый алгоритм распределяющий варваров по территориям (моря, материки) работал так: выбирался случайный тайл на карте и проверялся, принадлежит ли он нужной територии. Если нет, то снова выбирался случайный тайл. И так до тех пор, пока тайл не окажется нужным. Я это код подправил. Дело в том, что для оптимизации своего ИИ я написал алгоритм создающий массив (список) тайлов для каждой территории. Вот этим я и воспользовался. Так что теперь случайный тайл выбирается не из массива всей карты, а из массива нужной территории.

Для того чтоб проверить свою оптимизацию, провел по одной игре в 320 ходов на автоплее в версии 0.16.16 и 0.17.2. Автосохранение проводилось через каждые 40 ходов. По времени создания файлов-сэйвов делались расчеты для графиков (игры начинались в 00,00 - вручную менял время на кампе).
Настройки игры: количество игроков - 14 (средняя карта), скорость - марафон (1200 ходов), карта - континенты (2 штуки).
Тест дал дакие результаты: версия 0.16.16 - 32 мин 22 сек, версия 0.17.3 - 25 мин 15 сек. Что после подсчетов дает 22% экономии времени или 28% прибавки к скорости благодаря оптимизации.