Производительность 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 |
Примечание
Время операций, не зависящих от количества сущностей (создание, удаление, добавление), остаётся практически постоянным. Операция пересечения типов масштабируется линейно относительно размера наименьшего набора сущностей.
Рекомендации
Используйте getEntitiesWithAll() для сложных запросов
Избегайте частого добавления/удаления компонентов
Группируйте операции над сущностями
Для массовой обработки компонентов одного типа используйте view<T>(),
чтобы избежать повторных поисков в хеш-таблице.