Commit f7898292 by PLN (Algolia)

docs(perf): 2026-07-24 live-playback highlighter marker profile

The playing counterpart to the July-18 idle capture: mid-set highlight-stats
shows 580 markers live vs 16 active, accumulating ~40/min (matches July's
34/min idle) — the position-marker pool still never evicts, so the 07-19
"marker leak fixed" is incomplete and the idle 82% renderer burn (the
break-time heat) shares this exact root. UI-smoothness only; audio untouched.
parent 2960c9fb
......@@ -73,4 +73,31 @@ the highlighter loop itself.
disappoints, thin-plugin path (tidal.nvim / VSCode extension) carries the identity cheaper.
Upstream issue #229 (Aug 2025) plans a web-worker offload for highlighting.
## Update 2026-07-24 — live-playback profile (mid-set)
Captured ~14.5 min into an actual set (16 orbits active), machine in `cool` regime
(max_perf_pct=85, on AC, package 67–70°C, power-aware watcher holding — no turbo spike).
This is the **playing** counterpart to the July-18 idle capture above (which had `active 0`).
```
[Highlighter profile] 868.4s window | RAF 28/s, work 19/s (idle 0%) | frame avg 0.485ms / max 78.485ms |
DOM writes 150/s | markers 580 live, creates/destroys 2/s, toggles 359/s | active 16 | errors 0
[Highlighter profile] jank: 7 frames >16ms, 3 >50ms | worst frame 78.485ms did 18 adds / 0 removes
```
Read:
- **Marker accumulation rate holds.** 580 live in 868 s ≈ **40 markers/min**, vs 2170 in 3799 s
≈ 34/min on July 18 — consistent, and only **16 actually active**. The position-marker pool
still never evicts (root cause #3, `#createPositionMarkers`, is still live in the running build).
Confirms the leak isn't idle-only: it grows at the same rate while playing.
- **Toggle/DOM churn scales with active events, as designed.** 359 toggles/s + 150 DOM writes/s at
`active 16` (vs 34/s + 17/s at `active 0` in July). The marker-reuse path works — churn tracks the
16-event working set, not the 580-marker pool — so the pool size costs *paint/reflow*, not toggles.
- **Tail unchanged.** Worst frame 78 ms on an **18-add burst / 0 removes** (adds unbalanced by
removes = accumulation signature); 3 frames >50 ms in 14.5 min. Average stays cheap (0.485 ms,
idle 0% — RAF gating good). The open work is still (a) **evict/cap the pool to the working set**
and (b) tame the add-burst spikes.
- **Impact: UI-smoothness only.** Audio is on scsynth's RT thread, untouched; jank is occasional
cursor/scroll hitch that trends worse the longer a set runs (pool is monotonic). Mild at 14.5 min.
See companion: `2026-07-18-tidalcycles-2026-landscape-research.md`.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment