Wire live classifyItem into continuous playback, add jam/E-stop cases, presenter controls (seek/speed/hotkeys), quality modes, demo scripts, audit docs, and a verify-only autonomous agent CLI with hard safety limits. Co-authored-by: Cursor <cursoragent@cursor.com>
118 lines
5.4 KiB
Markdown
118 lines
5.4 KiB
Markdown
# Базовая линия производительности (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.
|