mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 01:21:20 -04:00
66 lines
2.9 KiB
Markdown
66 lines
2.9 KiB
Markdown
# `/` CPU Performance Issue Index
|
|
|
|
This folder breaks the live-site `/` CPU investigation into separate, work-ready issues.
|
|
Each issue can be handled in its own chat or branch without needing to re-run the whole
|
|
investigation first.
|
|
|
|
The testing target was the deployed page:
|
|
|
|
```sh
|
|
https://rover.otter.land/
|
|
```
|
|
|
|
The important local perf tools are:
|
|
|
|
```sh
|
|
node perf/live-cpu-profile.mjs https://rover.otter.land/ perf/results
|
|
node perf/live-listener-audit.mjs https://rover.otter.land/ perf/results
|
|
CPU_THROTTLE=6 VIEWPORT=390x844 MOBILE=1 SAMPLE_MS=30000 node perf/live-root-runtime-audit.mjs https://rover.otter.land/ perf/results
|
|
```
|
|
|
|
The strongest `/` artifacts from this investigation are:
|
|
|
|
- `perf/results/2026-06-11T03-15-51-398Z/report.json`
|
|
Clean `/` profile, mobile viewport, 8x CPU throttle.
|
|
- `perf/results/2026-06-11T03-03-31-625Z-listeners/listener-report.json`
|
|
Listener add/remove stack audit.
|
|
- `perf/results/2026-06-11T03-21-51-263Z-root-runtime/root-runtime-report.json`
|
|
`/` runtime audit, mobile viewport, 6x CPU throttle, 30s sample.
|
|
- `perf/results/2026-06-11T03-22-44-714Z-root-runtime/root-runtime-report.json`
|
|
`/` runtime audit, mobile viewport, 6x CPU throttle, 18s sample with mutation targets.
|
|
|
|
## Ranked Issues
|
|
|
|
1. [Global input listener churn](./001-global-input-listener-churn.md)
|
|
2. [ControlContext broad invalidation](./002-control-context-broad-invalidation.md)
|
|
3. [High-volume socket log stream](./003-high-volume-log-stream.md)
|
|
4. [Sensor telemetry render frequency](./004-sensor-telemetry-render-frequency.md)
|
|
5. [ReplaySourcesPanel repeated DOM commits](./005-replay-sources-panel-churn.md)
|
|
6. [Chat and nickname composer churn](./006-chat-and-nickname-churn.md)
|
|
7. [Timers and polling cleanup](./007-timers-and-polling.md)
|
|
|
|
## Quick Read
|
|
|
|
The highest-confidence first fix is issue 001. It is directly measured, large, and
|
|
structurally fixable: install keyboard/gamepad global listeners once and have them read
|
|
latest state/actions from refs.
|
|
|
|
Issue 002 is the likely multiplier behind issue 001 and several UI churn symptoms. The
|
|
current `ControlContext` value changes broadly, and many callbacks depend on `state` or
|
|
`pipeline`; that causes consumers/effects to refresh even when the visible behavior did
|
|
not materially change.
|
|
|
|
Issues 003 and 004 are independent live-data pressure: the `/` page receives a lot of
|
|
socket traffic, especially `log:entry` and `sensorFrame`, and those streams feed UI work.
|
|
|
|
Issue 005 and issue 006 are component-level symptoms visible in DOM mutation probes. They
|
|
should probably be tackled after the context/listener work, because broad invalidation may
|
|
be causing some of their repeated commits.
|
|
|
|
## Important Scope Note
|
|
|
|
There are also `/spectate` results in `perf/results` because the investigation briefly
|
|
compared routes. The user later clarified that `/spectate` is not the current priority.
|
|
These issue writeups intentionally focus on `/` only.
|
|
|