Background
No benchmarks exist. Any perf claim about Layout v2, diff rendering, or virtual ListView is anecdotal. Regressions are invisible.
Goal
A JMH-based benchmark project with microbenchmarks for critical paths, runnable locally and in CI (gated, not on every commit).
Scope
- New sbt submodule
modules/termflow-bench using sbt-jmh.
- Benchmarks for:
Layout.measure on representative trees.
Layout.resolve → VNode.
AnsiRenderer.diff on controlled before/after framebuffers.
- End-to-end frame cost on
SineWaveApp.
- Baseline numbers checked into
docs/PERFORMANCE.md.
- CI job:
sbt bench/Jmh/run -i 1 -wi 1 -f1 smoke-run; full runs manual.
Acceptance
Part of Phase 4 — Rendering & perf.
Background
No benchmarks exist. Any perf claim about Layout v2, diff rendering, or virtual ListView is anecdotal. Regressions are invisible.
Goal
A JMH-based benchmark project with microbenchmarks for critical paths, runnable locally and in CI (gated, not on every commit).
Scope
modules/termflow-benchusingsbt-jmh.Layout.measureon representative trees.Layout.resolve→ VNode.AnsiRenderer.diffon controlled before/after framebuffers.SineWaveApp.docs/PERFORMANCE.md.sbt bench/Jmh/run -i 1 -wi 1 -f1smoke-run; full runs manual.Acceptance
sbt bench/Jmh/runworks locally.Part of Phase 4 — Rendering & perf.