LINUX.ORG.RU

История изменений

Исправление Kogrom, (текущая версия) :

Пример плох по нескольким причинам.

Пример предназначен только для того, чтобы показать, что очень часто бывают связи между объектами, когда GC никак не поможет. В конкретику я ушёл, чтобы ты задержал взгляд.

А когда связи только отвечают за владение, то и без GC обычно можно справиться.

Прежде всего, стоимость доступа O(log N) в горячем коде часто становится неприемлимой.

Это всё мелочи, пока число юнитов не достигло десятков тысяч. Да, можно в простой map засунуть без всяких хешей. А можно даже обходить vector по порядку - это всё равно будет не самое медленное в коде.

А как ты решишь, что эта самая сущность, юнит, должна высвобождаться?

Кончились очки жизни - удаляем юнит. Функция нанесения ущерба юниту проверит и запустит удаление, а также оповещение других юнитов.

как гарантировать, что «уникальный» идентификатор действительно будет уникальным и под раздачу не попадет случайный новый объект?

Если говорить конкретно про оффлайн стратежку, то проблем нет. Объектов не будет бесконечное количество. Можно без всяких хешей жить спокойно. Просто инкрементировать счётчик на каждый новый созданный объект. С онлайн-стратежкой идентификатор надо будет запрашивать у сервера.

Исходная версия Kogrom, :

Пример плох по нескольким причинам. Пример предназначен только для того, чтобы показать, что очень часто бывают связи между объектами, когда GC никак не поможет. В конкретику я ушёл, чтобы ты задержал взгляд.

А когда связи только отвечают за владение, то и без GC обычно можно справиться.

Прежде всего, стоимость доступа O(log N) в горячем коде часто становится неприемлимой.

Это всё мелочи, пока число юнитов не достигло десятков тысяч. Да, можно в простой map засунуть без всяких хешей. А можно даже обходить vector по порядку - это всё равно будет не самое медленное в коде.

А как ты решишь, что эта самая сущность, юнит, должна высвобождаться?

Кончились очки жизни - удаляем юнит. Функция нанесения ущерба юниту проверит и запустит удаление, а также оповещение других юнитов.

как гарантировать, что «уникальный» идентификатор действительно будет уникальным и под раздачу не попадет случайный новый объект?

Если говорить конкретно про оффлайн стратежку, то проблем нет. Объектов не будет бесконечное количество. Можно без всяких хешей жить спокойно. Просто инкрементировать счётчик на каждый новый созданный объект. С онлайн-стратежкой идентификатор надо будет запрашивать у сервера.