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

Бенчмарки

Ниже приведены результаты измерений на типичной конфигурации (CPU, ОЗУ) после оптимизаций (коммит 0201e8a). Время указано в наносекундах (ns) для разных объёмов данных.

Операция

64 сущности

8192 сущности

Создание сущности

3.5 ns

3.5 ns

Удаление сущности

275 ns

275 ns

Добавление компонента

313 ns

313 ns

Удаление компонента

311 ns

311 ns

Получение компонента

16 ns

16 ns

Получение списка сущностей с одним типом

18 ns

18 ns

Поиск сущностей с двумя компонентами

2693 ns

506 650 ns

Примечание

Время операций, не зависящих от количества сущностей (создание, удаление, добавление), остаётся практически постоянным. Операция пересечения типов масштабируется линейно относительно размера наименьшего набора сущностей.

Рекомендации

  1. Используйте getEntitiesWithAll() для сложных запросов

  2. Избегайте частого добавления/удаления компонентов

  3. Группируйте операции над сущностями

  4. Для массовой обработки компонентов одного типа используйте view<T>(),

чтобы избежать повторных поисков в хеш-таблице.