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>
5.4 KiB
Базовая линия производительности (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 buildoutput; 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.