Как стать автором
Обновить

Комментарии 6

Производительность

За счёт плоской структуры компонентов открываются широкие возможности оптимизации работы с памятью. Например в python можно использовать слоты для объектов

Справедливости ради слоты можно и без ECS использовать.

Имхо, применение ECS в Python скорее вызовет замедление логики, чем ускорение. Из-за порождения кучи лишних объектов: больше аллокаций/деаллокаций, больше скачков между кусками памяти, больше нагрузки на сборщик мусора.

Можно попытаться это обойти с помощью numpy и подобных штук, но профит спорный.

Бесспорно в python это будет не самая эффективная реализация, но я не хотел усложнять её понимание такими оптимизациями.

Хм, а будет объективный прирост производительности благодаря ecs like организации в питоне?
Там же суть в том, что ты объекты в памяти располагаешь по порядочку, а действия группируешь, что позволяет эффективнее использовать кеш процессора для однотипных операций.
А в питоне, если не сводить все к массивам базовых типов, будет все равно выделение места под класс на куче.
Или data class (slots=true) это как раз про это?

(slots=true) даёт бонус к скорости доступа к атрибутам класса и позволяет экономить память под отдельный объект. Но проблема выделения памяти под множество объектов слотами всё же не решается.

То есть это просто про упаковку полей?

Верно

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации