Bench
Paneflow ships performance work with numbers, not adjectives. Each suite below runs on a committed baseline and on the latest commit, on the same machine, from a script in the repository. The terminal pipeline is first; more suites follow.
- 1Idle wakeups, display-only pane98 % 64.0×
- 2Publish on keystroke echo, 220×60 pane95 % 20.0×
- 3Row text lookup, 220×60 pane92 % 11.8×
- 4Idle wakeups, shell at its prompt86 % 7.11×
- 5Publish gate on a trickle75 % 4.00×
- 6Corpus throughput74 % 3.87×
- 7Base font resolve, per frame50 % 2.00×
- 8Publish on scroll, 120×40 pane50 % 1.98×
- 9Publish on scroll, 220×60 pane36 % 1.56×
- 10Layout pass, 220×60 pane9.9 % 1.11×
Terminal pipeline
From PTY bytes to the layout the renderer draws: snapshot and grid conversion on scroll and on a keystroke echo, the window-free layout pass, the lookups the render thread makes every frame, publish pacing on a trickle of output, corpus throughput, and how often an idle pane wakes up. Timings are medians in the release profile; allocation counts are exact.
All metrics
Baseline and latest side by side: headline value, the p95 where the metric has one, and allocations per iteration.
| Metric | Baseline | Latest | Change | p95 | Alloc/iter, baseline | Alloc/iter, latest |
|---|---|---|---|---|---|---|
| Publish on scroll, 220×60 pane | 700.7 µs | 448.0 µs | -36.1 % 1.56× | 863.6 µs → 465.7 µs | 2.70 MiB | 266 B |
| Publish on keystroke echo, 220×60 pane | 166.0 µs | 8.3 µs | -95.0 % 20.0× | 196.2 µs → 8.6 µs | 1.41 MiB | 106 B |
| Publish on scroll, 120×40 pane | 324.8 µs | 163.8 µs | -49.6 % 1.98× | 377.1 µs → 169.8 µs | 1.02 MiB | 242 B |
| Layout pass, 220×60 pane | 515.8 µs | 464.9 µs | -9.9 % 1.11× | 632.3 µs → 481.3 µs | 164.8 KiB | 164.8 KiB |
| Row text lookup, 220×60 pane | 7.1 µs | 600 ns | -91.5 % 11.8× | 9.1 µs → 600 ns | 4.3 KiB | 1.9 KiB |
| Base font resolve, per frame | 200 ns | 100 ns | -50.0 % 2.00× | 200 ns → 100 ns | 152 B | 0 B |
| Active theme read, per frame | 100 ns | 100 ns | +0.0 % 1.00× | 100 ns → 100 ns | 0 B | 0 B |
| Publish gate on a trickle | 1,000 frames per 1,000 chunks | 250 frames per 1,000 chunks | -75.0 % 4.00× | n/a | n/a | n/a |
| Corpus throughput | 0.2 MiB/s | 0.9 MiB/s | +287.0 % 3.87× | n/a | 1.52 MiB | 2.8 KiB |
| Idle wakeups, display-only pane | 64 wakeups/s | 1 wakeups/s | -98.4 % 64.0× | n/a | n/a | n/a |
| Idle wakeups, shell at its prompt | 64 wakeups/s | 9 wakeups/s | -85.9 % 7.11× | n/a | n/a | n/a |
More suites will follow, each with its own committed baseline and archived runs, in the same format.