← Урок ECS/Лаба: cache locality
EN
Lab · потрогать руками

Где живут твои данные

Лаба без кода: одна и та же система-проход читает Position+Velocity у N сущностей. Меняешь только раскладку памяти — и смотришь, сколько строк кэша реально тянется из RAM и во сколько раз это быстрее или медленнее. Всё, что в уроке посчитано формулой, тут видно глазами.
🏠 эксперимент~8 мин
Как пользоваться
Выбери раскладку: SoA (структура массивов — компоненты колонками), AoS (массив структур — «жирный» объект, система читает 16 из его байт) или OOP-куча (объекты разбросаны, доступ по указателям). Крути N (число сущностей) и размер структуры у AoS. Жми Прогон системы — каждый квадрат это строка кэша 64 Б, которую пришлось подтянуть; зелёное в ней — байты, которые система реально использует, оранжевое — притащено зря. Сравни три раскладки в таблице снизу: та же работа, та же O(N) — разница только в движении данных.
полезные байты (Pos+Vel) притащено зря промах (столл RAM) ещё не тронуто
раскладкастрок кэшаполезновремя (×)
Что заметить: 1) SoA тянет минимум строк, ~100% байт полезны — система течёт линейно, префетчер прячет латентность. 2) AoS: подними «размер структуры» — система всё так же читает только 16 байт, но тащит весь жирный объект → оранжевого всё больше, строк больше, время растёт пропорционально мусору (на 64 Б — ровно 4×). Поставь размер 16 — AoS догоняет SoA (структура = ровно нужные поля). 3) OOP-куча: те же данные, но каждый объект в случайном адресе → красные промахи, префетч бессилен, на проход уходит на порядок-два больше. Та же сложность O(N) — раскладка решает.
🏠 Что дальше
Вернись в урок, блок «🔧 Запусти и поковыряй» — там как собрать mini-archetype-ECS на Rust (~300 строк) и снять реальные cache-misses через Tracy: увидеть на своём железе, что число промахов падает, а не просто «стало чуть быстрее».
Связи
из урока
ECS и data-oriented design — теория: memory wall, cost-model прохода time ≈ N·(t_hit + m_miss·t_miss), archetype vs sparse-set.
пересечение
Pathfinding — flow field: один расчёт на всех вместо тысяч независимых поисков — та же дисциплина раскладки под горячий цикл.
Что заметить по итогу (чеклист наблюдений)