Skip to content

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.

Terminal pipelinecb05be20
MetricSaved
  1. 1Idle wakeups, display-only pane
    98 % 64.0×
  2. 2Publish on keystroke echo, 220×60 pane
    95 % 20.0×
  3. 3Row text lookup, 220×60 pane
    92 % 11.8×
  4. 4Idle wakeups, shell at its prompt
    86 % 7.11×
  5. 5Publish gate on a trickle
    75 % 4.00×
  6. 6Corpus throughput
    74 % 3.87×
  7. 7Base font resolve, per frame
    50 % 2.00×
  8. 8Publish on scroll, 120×40 pane
    50 % 1.98×
  9. 9Publish on scroll, 220×60 pane
    36 % 1.56×
  10. 10Layout pass, 220×60 pane
    9.9 % 1.11×
Figure 1. Share of the baseline cost removed per metric, latest run against the committed baseline. Timings are medians in the release profile; allocation counts are exact. AMD Ryzen 7 7800X3D, Windows 11, release profile.

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.

MetricBaselineLatestChangep95Alloc/iter, baselineAlloc/iter, latest
Publish on scroll, 220×60 pane700.7 µs448.0 µs-36.1 % 1.56×863.6 µs465.7 µs2.70 MiB266 B
Publish on keystroke echo, 220×60 pane166.0 µs8.3 µs-95.0 % 20.0×196.2 µs8.6 µs1.41 MiB106 B
Publish on scroll, 120×40 pane324.8 µs163.8 µs-49.6 % 1.98×377.1 µs169.8 µs1.02 MiB242 B
Layout pass, 220×60 pane515.8 µs464.9 µs-9.9 % 1.11×632.3 µs481.3 µs164.8 KiB164.8 KiB
Row text lookup, 220×60 pane7.1 µs600 ns-91.5 % 11.8×9.1 µs600 ns4.3 KiB1.9 KiB
Base font resolve, per frame200 ns100 ns-50.0 % 2.00×200 ns100 ns152 B0 B
Active theme read, per frame100 ns100 ns+0.0 % 1.00×100 ns100 ns0 B0 B
Publish gate on a trickle1,000 frames per 1,000 chunks250 frames per 1,000 chunks-75.0 % 4.00×n/an/an/a
Corpus throughput0.2 MiB/s0.9 MiB/s+287.0 % 3.87×n/a1.52 MiB2.8 KiB
Idle wakeups, display-only pane64 wakeups/s1 wakeups/s-98.4 % 64.0×n/an/an/a
Idle wakeups, shell at its prompt64 wakeups/s9 wakeups/s-85.9 % 7.11×n/an/an/a

More suites will follow, each with its own committed baseline and archived runs, in the same format.