Measure the CPU, memory and GPU time a web terminal itself costs in Chrome, for Wraith and the other web terminals, across a range of workloads, as a delta over the same page with no terminal mounted.
Renderers
Wraith native (Wraith.mount), Wraith xterm-compatible profile, Wraith pool (per-canvas) and Fleet (shared surface) for multi-terminal cases, xterm.js 6 + WebGL, xterm.js 6 DOM, restty 0.3.0, @zem-sh/terminal 0.1.2, ghostty-web 0.4.0, wterm (DOM, built-in core) and wterm + Ghostty core 0.5.6.
Workloads
Idle with blinking cursor (30 s); idle after 10k and after 100k lines of scrollback; typing echo ~10 keys/s; log stream ~200 lines/s; max-throughput 20 MB colored log; full-screen truecolor redraw every frame (160×50); Unicode/CJK/emoji text; 16 and 64 terminals streaming logs. 160×50 at 13 px, DPR 2 for single-terminal cases.
Acceptance criteria
-
demo/efficiency.html+demo/efficiency-bench.jsharness page; every renderer and thenonebaseline load the same page, fonts and generated data. -
scripts/efficiency-benchmark.mjsruns each renderer × workload in a fresh headed Chrome, 3 rounds, renderer order interleaved per round; resumable. - CPU per Chrome process type (browser, renderer incl. workers, GPU, utility) from CDP
SystemInfo.getProcessInfoCPU-time deltas. - Memory per process: macOS
phys_footprint(footprint), its graphics share, and RSS; main-thread JS heap. - GPU time per process from
AGXDeviceUserClientaccumulatedGPUTimedeltas. - Every number reported as a delta over the no-terminal baseline; fixed-work results as CPU-ms per MB and time to finish; paced results as CPU-ms/s and per 1,000 updates.
- Machine state per run (load average, power source); runs wait for the Fleet benchmark and for load < 6 (bounded wait, recorded).
- Correctness check per run: end marker read back where the renderer exposes text, retained scrollback lines, screenshot.
-
docs/benchmarks/efficiency/REPORT.mdwith per-workload tables, an efficiency summary (CPU per MB, RAM per terminal, RAM per 10k lines), caveats (shared GPU process, device-wide GPU, load), and rawresults.jsonwith build hash, Chrome and package versions.
Activity
0No activity yet.