Benchmarks
Rezi includes a benchmark suite comparing terminal UI pipelines:
Rezi includes a benchmark suite comparing terminal UI pipelines:
- Rezi (native):
@rezi-ui/coreviaui.*VNodes - Ink:
ink(React + Yoga + ANSI output) - OpenTUI:
@opentui/core+@opentui/react(Bun runner integration) - Bubble Tea:
github.com/charmbracelet/bubbletea(Go runner integration) - blessed: imperative Node terminal UI baseline
- ratatui: native Rust baseline
The authoritative benchmark write-up and the latest committed results live in the repository:
BENCHMARKS.mdbenchmarks/(structured JSON + generated Markdown)- Latest rigorous terminal-suite dataset:
benchmarks/2026-02-19-terminal-v3/ - Latest OpenTUI React matchup dataset:
benchmarks/2026-02-20-rezi-opentui-react-all-quick-v6/ - Latest OpenTUI Core matchup dataset:
benchmarks/2026-02-20-rezi-opentui-core-all-quick-v4/ - Latest Bubble Tea matchup dataset:
benchmarks/2026-02-20-rezi-opentui-bubbletea-core-all-quick-v3/ - GitHub: https://github.com/RtlZeroMemory/Rezi/blob/main/BENCHMARKS.md
Running benchmarks
npm ci
npm run build
npm run build:native
npx tsc -b packages/bench
node --expose-gc packages/bench/dist/run.js --output-dir benchmarks/localFor a faster smoke run:
node --expose-gc packages/bench/dist/run.js --quick --output-dir benchmarks/local-quickRezi vs OpenTUI across the full scenario set:
node --expose-gc packages/bench/dist/run.js \
--matchup rezi-opentui \
--io pty \
--output-dir benchmarks/local-rezi-opentuiRezi vs OpenTUI core-imperative (no React adapter):
node --expose-gc packages/bench/dist/run.js \
--matchup rezi-opentui \
--opentui-driver core \
--io pty \
--output-dir benchmarks/local-rezi-opentui-coreRezi vs OpenTUI vs Bubble Tea (same scenario set, PTY mode):
REZI_GO_BIN=/path/to/go \
node --expose-gc packages/bench/dist/run.js \
--matchup rezi-opentui-bubbletea \
--opentui-driver core \
--io pty \
--output-dir benchmarks/local-rezi-opentui-bubbleteaOptional PTY mode (real TTY path; requires node-pty):
npm i -w @rezi-ui/bench -D node-pty
node --expose-gc packages/bench/dist/run.js --io pty --quick --output-dir benchmarks/local-pty-quickTerminal competitor suite (PTY mode):
cd benchmarks/native/ratatui-bench
cargo build --release
cd -
node --expose-gc packages/bench/dist/run.js \
--suite terminal \
--io pty \
--replicates 7 \
--discard-first-replicate \
--shuffle-framework-order \
--shuffle-seed local-terminal-v3 \
--cpu-affinity 0-7 \
--env-check warn \
--output-dir benchmarks/local-terminal-v3OpenTUI rows are executed through packages/bench/opentui-bench/run.ts, which requires Bun.
Default driver is react; use --opentui-driver core for imperative-core mode.
bun --versionBubble Tea rows are executed through packages/bench/bubbletea-bench/main.go, which requires Go:
go versionRecommended: Go >= 1.24.
Interpreting results
See BENCHMARKS.md for:
- Terminal scenario definitions (
terminal-rerender,frame-fill,screen-transition,fps-stream,input-latency,memory-soak,virtual-list,table) - Methodology notes (process isolation, replicates, CI bands, shuffle order, CPU affinity)
- CPU/wall/memory interpretation and precision limits