# Базовая линия производительности (Performance Baseline) **Дата:** 2026-07-15 **Ветка:** `feature/maximum-demo-realism` **Команды:** `npm test`, `npm run build` Легенда: **Измерено** · **Оценка** · **Не измерено в этом прогоне** (клиентский FPS на железе жюри). --- ## 1. Тесты | Метрика | Baseline до изменений | После изменений | Тип | | ------- | --------------------: | --------------: | --- | | Passed assertions/tests | 144 | **153** | Измерено | | Test files | 14 | **16** | Измерено | | Runner | Vitest | Vitest | — | | Результат | green | green | Измерено | Дельта: +9 тестов, +2 файла (в т.ч. расширенный `simulation.test.ts`, `qualityMode.test.ts` и связанные). --- ## 2. Production build | Метрика | До | После | Тип | | ------- | -- | ----- | --- | | Build status | OK | OK | Измерено | | Build time | ~391 ms | OK (порядок сотен ms) | Измерено / частично | | Pipeline | `tsc -b && vite build` | то же | Измерено | ### Размеры артефактов (после) | Артефакт | Raw | Gzip | Тип | | -------- | --: | ---: | --- | | CSS | 39.66 kB | 8.79 kB | Измерено | | Continuous twin JS chunk | 51.29 kB | 13.68 kB | Измерено | | Main R3F-related chunk (до итерации) | ~881 kB | — | Измерено (baseline до) | > Точный полный rollup всех чанков «после» зависит от конкретного `vite build` output; CSS и continuous twin зафиксированы аудитом. Main Three/R3F chunk исторически доминирует по весу — это ожидаемо. --- ## 3. Runtime (клиент) | Метрика | Ожидание / факт | Тип | | ------- | --------------- | --- | | Рендер 3D | WebGL в браузере клиента | Измерено (архитектура) | | Серверный 3D | Не используется | Измерено | | Target FPS demo/high | 60 | Измерено (presets) | | Target FPS low/medium | 30 | Измерено | | Shadows / effects | Выключены в presets | Измерено | | Adaptive quality | `detectQualityMode` / `adaptQuality` | Измерено | | Фактический FPS 1080p на GTX клиента жюри | Зависит от клиента | **Не измерено** здесь | Сервер (OwlPrime) при раздаче статики: load ~0.5–0.6 — **не** является bottleneck FPS (**Измерено** нагрузка хоста). --- ## 4. Качество vs производительность (trade-offs) | Рычаг | Влияние на FPS | Влияние на реализм | | ----- | -------------- | ------------------ | | dprMax 1→1.5 | − | + резкость | | antialias | − | + края | | shadows on | −− | + контакт с лентой | | effects/AO | −−− | + «кино» | | maxVisibleItems | + при снижении | − плотность потока | | rollerDetail none/sparse | + | − механика роликов | | Static rollers (perf commit) | + | − вращение | Текущая политика: **сначала стабильный FPS**, затем дозированный реализм. --- ## 5. Сравнение до / после (сводка) | Метрика | До | После | Изменение | | ------- | -: | ----: | --------: | | Tests passed | 144 | 153 | +9 | | Test files | 14 | 16 | +2 | | Build | OK ~391ms | OK | стабильно | | Demo playlist cases | 8 | 10 | +2 (faults) | | Live classify on `/` | playlist-heavy | wired `classifyItem` | качество демо ↑ | | Quality modes | не как система | low…demo | +адаптация | | CSS gzip | — | 8.79 kB | зафиксировано | | Continuous chunk gzip | — | 13.68 kB | зафиксировано | --- ## 6. Нагрузка инструментов разработки на сервере | Инструмент | Оценка стоимости | Рекомендация | | ---------- | ---------------- | ------------ | | `npm test` | Умеренная CPU, минуты | OK on-demand | | `npm run build` | Короткая CPU | OK | | Playwright 1 worker | Высокая RAM | Не во время демо | | Local LLM 7B | Очень высокая VRAM/RAM | Избегать на хосте демо | | Agent dry-run | = tests+build | Лимит 1 worker | --- ## 7. Регрессионные триггеры (когда обновлять baseline) Переснять baseline, если: - включены shadows/effects в default demo; - добавлен physics engine; - вырос main chunk >20%; - FPS жалобы на 1366×768; - изменён continuous twin chunk существенно. --- ## 8. Вывод Производительность MVP **приемлема** для статического хостинга и клиентского WebGL. Бюджет сознательно защищён отключёнными тенями/эффектами. Главный риск FPS — будущие визуальные «улучшения без лимитов», а не текущий nginx.