prec, measured
One run of prec's docs/bench/bench.sh on 2026-10-16: an AMD Ryzen 9 9950X on Linux, prec 1.2.0 and VHS v0.11.0 pinned to the same 24 threads, recording the sample app's 10-second tour.tape at 1280x720.
Against VHS
Every frame at the rate you ask for, then the re-render times and the one binary.
4fab0be36a0ac519…
Every row of the run
Both tools on the same tape at each rate, then the cast re-rendered from 720p to 4K.
| Asked for | prec frames | prec clip | prec wall time | VHS frames | VHS file | VHS wall time |
|---|---|---|---|---|---|---|
| 30 fps | 299 | 30 fps, 9.97 s | 20.5 s | 239 | 25 fps, 9.56 s | 13.9 s |
| 60 fps | 598 | 60 fps, 9.97 s | 21.7 s | 228 | 25 fps, 9.12 s | 14.3 s |
| 120 fps | 1,196 | 120 fps, 9.97 s | 23.4 s | 214 | 25 fps, 8.56 s | 15.2 s |
VHS finishes sooner, because it keeps what it can capture in real time; prec records in real time, then replays and encodes every frame at CRF 14 with pito-codecs' H.264 encoder. A frame's moment that brings no new bytes reuses the previous frame, so a mostly still terminal replays faster than a busy one.
Re-rendering the cast
| Size and rate | Frames | Time |
|---|---|---|
| 720p, 30 fps | 299 | 9.2 s |
| 1080p, 60 fps | 598 | 16.9 s |
| 2160p, 30 fps | 299 | 27.8 s |
| 2160p, 120 fps | 1,196 | 48.6 s |
The 30 fps recording's cast, with no app run. The 720p render again took 9.8 s and wrote the same bytes.
How it was measured
docs/bench/bench.sh, once, on 2026-10-16: both tools
pinned to the same 24 threads (CPUS=4-15,20-31) at nice 10,
prec 1.2.0 with PREC_DIRECT=1 and VHS v0.11.0, recording the
sample app's tour.tape (about 10 seconds of typing, progress
bars and the palette) at 1280x720. The Linux x86_64 binary is 5,935,688 bytes,
2,508,494 packed as the release's .tar.gz; a cold cargo build --release --locked took 70.4 s with 4 build jobs; src/ is 10,912 lines of Rust
with 18 direct dependencies. Renders on a Mac are untested.
Every number is from prec's README at v1.4.6.
Read it. Run it. It's MIT.
The code is MIT licensed, © Catalin Ilinca: read it, fork it, ship it in your own work. Its name and logos, and PITO MD's, are © Catalin Ilinca, all rights reserved, and are not covered by the MIT licence.
Credits
The charts are drawn by pito-compare from prec's docs/bench data and from numbers its README states.
prec vendors xterm.js 5.5.0 and VHS v0.11.0's 348 colour schemes, both under the MIT licence; their notices are in its NOTICE.
Set in Archivo by Omnibus-Type and Atkinson Hyperlegible Mono by the Braille Institute, both under the SIL Open Font License.