Производительность ECS ======================= .. _ecs-performance: Бенчмарки --------- Ниже приведены результаты измерений на типичной конфигурации (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 | | компонентами | | | +--------------------------------+----------------+------------------+ .. note:: Время операций, не зависящих от количества сущностей (создание, удаление, добавление), остаётся практически постоянным. Операция пересечения типов масштабируется линейно относительно размера наименьшего набора сущностей. Рекомендации ------------ 1. **Используйте getEntitiesWithAll()** для сложных запросов 2. **Избегайте частого добавления/удаления** компонентов 3. **Группируйте операции** над сущностями 4. Для массовой обработки компонентов одного типа используйте **view()**, чтобы избежать повторных поисков в хеш-таблице.