[performance] Карта реплея копирует все точки треков перед сильным прореживанием #25
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проверено на опубликованном
90379f6при проверке дополнительного ревью. Незакоммиченные изменения из чужой рабочей копии недоступны.replay::map каждый тик вызывает
tr.path(o,1,self.t)и получает полный новый Vec. Затем рисует лишь ~2–14 сегментов трека по общему бюджету. Дополнительно заново вычисляет статичные границы готовой записи через path(o,20,rec.len).Проверено оригинальным Track::path: трек из 6000 точек → full Vec 6000×24=144000 байт; прямой вызов path(...,500,...) → 13 точек/312 байт, с сохранением первой и последней. Это пример сокращения временных данных, не GPU/FPS benchmark.
Предложение: определять stride по числу доступных точек до t и бюджету сегментов ДО материализации Vec; использовать iterator/уже существующий path(every). Кэшировать bounds при завершении записи и масштаб/координаты при неизменном размере HUD. При паузе не пересобирать неизменную карту без необходимости.
Критерий: сохранены форма и endpoints видимого пути, head/event markers, перемотка назад/вперёд; memory allocations/CPU time измерены на длинной записи. STEP=2 уже задаёт частоту записи: просто «использовать STEP» само по себе не решает лишнее копирование.
Код:
🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/67a2a52 (запушено в main).