автобатлеры (авточесс, андерлордс, хс бг)

avatar Удалено 616072

436

6

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

Удалено 616072

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

знает может кто или натыкался на алгоритм/материал как в них реализован пул существ?


сделал свою реализацию через вектор из 9 векторов (9 тиров из автобатлеров вместо стандартных 5), каждый из которых заполняю циклом (412 указателей), но чото даже на моём ноуте (MD Ryzen 5 3550H (2.1 - 3.7 ГГц) / RAM 8 ГБ / SSD 512 ГБ / nVidia GeForce GTX 1650, 4 ГБ) только этот процесс (создание+запихивание) занимает 59 секунд отладки




UPD 19.11


Обновил свой алгортим запилив 9 потоков (всё те же 9 тиров) и выполнение сократилось с 55 секунд до 15, однако, крайне высроло потребление ресурсов


Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

Удалено 616072

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

Поднятие темы

Dermand

Пользователь

Регистрация: 13.09.2013

Сообщения: 523

Рейтинг: 200

Dermand

Регистрация: 13.09.2013

Сообщения: 523

Рейтинг: 200

Можешь вкратце объяснить, вкратце, что есть на входе и что нужно на выходе?(Не играл я в эти аутобатлеры) А лучше скинь эту часть кода, посмотрю.

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

Удалено 616072

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

Dermand сказал(а):


Можешь вкратце объяснить, вкратце, что есть на входе и что нужно на выходе?(Не играл я в эти аутобатлеры) А лучше скинь эту часть кода, посмотрю.


Нажмите, чтобы раскрыть...


две части в одну пасту запихнул (результат один и тот же, скорость и ресурсы разная), разделитель по комментарию


https://pastebin.com/BkSLE23J

Dermand

Пользователь

Регистрация: 13.09.2013

Сообщения: 523

Рейтинг: 200

Dermand

Регистрация: 13.09.2013

Сообщения: 523

Рейтинг: 200

NoMercyPWNZ сказал(а):


две части в одну пасту запихнул (результат один и тот же, скорость и ресурсы разная), разделитель по комментарию


https://pastebin.com/BkSLE23J


Нажмите, чтобы раскрыть...


Щас еще посмотрю, но сразу скажу думаю будет немного быстрее, да и правильно, если ты уже знаешь сколько будет юнитов зарезервируй сразу место в векторе, к примеру
vec.reserve(412)
Так при каждом пушбеке не прийдеться ресайзить вектор, и в теории должно работать немного быстрее

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

Удалено 616072

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

Dermand сказал(а):


Щас еще посмотрю, но сразу скажу думаю будет немного быстрее, да и правильно, если ты уже знаешь сколько будет юнитов зарезервируй сразу место в векторе, к примеру
vec.reserve(412)
Так при каждом пушбеке не прийдеться ресайзить вектор, и в теории должно работать немного быстрее


Нажмите, чтобы раскрыть...


сделал ресёрв каждого вектора и в итоге сэкономлено 0 секунд (0 изменений), по ресурсам тот же результат, но ЦП чуть больше скачет (в меньшую сторону)


UPD вообще ноль изменений, даже с ЦП

Dermand

Пользователь

Регистрация: 13.09.2013

Сообщения: 523

Рейтинг: 200

Dermand

Регистрация: 13.09.2013

Сообщения: 523

Рейтинг: 200

Ну а вообще, как на скриншоте, что я кинул делай через филл, тебе подойдет, уверен будет намного быстрее.

Удалено 616072

Пользователь

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

Удалено 616072

Регистрация: 21.02.2016

Сообщения: -2

Рейтинг: -1

Dermand сказал(а):

Если у тебя одинаковые юниты можешь так заполнять. через филл



Скорей всего не так сделал. Попробуй так, должно быть значительно быстрее. Между 1 и 2 вариантом у меня разница в 3 раза.

std::vector tmp(1000000);
for (size_t i = 0; i < 1000000; i++)
{
tmp = i;
}


std::vector tmp;
for (size_t i = 0; i < 1000000; i++)
{
tmp.push_back(i);
}


Ну а вообще, как на скриншоте, что я кинул делай через филл, тебе подойдет, уверен будет намного быстрее.

Нажмите, чтобы раскрыть...

спасибо тебе огромное, выполняется за 1 секунду при тех же 9 потоках

вот такой код в итоге получился https://pastebin.com/ifmBCnGR