Steno

Steno benchmark report

This report is generated by deno task bench:report. Treat the numbers as evidence from one machine, not a universal guarantee - if you're comparing runs, make sure they're on equivalent hardware and runtime versions.

Environment

  • Generated: 2026-08-07T09:15:01.920Z
  • Revision: 90b2aa2fbf9d
  • Working tree: clean
  • Runtime: Deno/2.9.4 aarch64-apple-darwin
  • OS: darwin 25.5.0
  • Architecture: aarch64
  • Logical CPUs: 10
  • System memory: 16.0 GiB

Build scenarios

Scenario Samples Min Average p75 p99
build (cold, 250 pages) 21 25.77 ms 26.82 ms 26.85 ms 31.77 ms
build (cold, 1000 pages) 13 100.69 ms 101.89 ms 102.33 ms 103.52 ms
build (cold, 4000 pages) 11 397.86 ms 404.63 ms 405.97 ms 417.09 ms
build (warm, 1000 pages unchanged) 26 30.88 ms 31.59 ms 31.76 ms 33.03 ms
build (atomic incremental, 1 changed page of 1000) 13 224.92 ms 232.12 ms 231.89 ms 252.42 ms

Cold scenarios delete the output and persistent cache before every measured build. Warm unchanged starts from an already-initialized 1,000-page site. Atomic incremental changes one page while keeping transactional staging and promotion in place. Fixture creation happens outside the timer.

Parser and template microbenchmarks

Scenario Samples Min Average p75 p99
parseFrontmatter (body only) 14454 3.21 ns 3.46 ns 3.46 ns 4.00 ns
parseFrontmatter (yaml + 10k-word body) 72 808.77 ns 817.77 ns 819.56 ns 870.20 ns
parseFrontmatter (yaml) 37 1.85 µs 1.87 µs 1.88 µs 1.92 µs
parseFrontmatter (toml) 26 3.15 µs 3.18 µs 3.19 µs 3.37 µs
parseFrontmatter (invalid yaml fails fast) 38857 11.33 µs 12.87 µs 13.21 µs 14.50 µs
parseFrontmatter (missing closing delimiter) 3115 14.78 ns 16.11 ns 16.41 ns 18.07 ns
pipeline (typical page parse->markdown->tau) 5372 82.79 µs 93.25 µs 93.83 µs 124.58 µs
pipeline (large page parse->markdown->tau) 1165 406.04 µs 433.19 µs 436.96 µs 493.54 µs
tau render (simple) 66 874.82 ns 901.51 ns 908.10 ns 1.08 µs
tau render (components + loops) 55778 7.75 µs 8.97 µs 8.92 µs 13.13 µs
tau render (list of 1000 items) 744 643.46 µs 682.31 µs 691.21 µs 745.54 µs
tau render (4-level nested loops) 448 1.09 ms 1.14 ms 1.16 ms 1.45 ms
tau render (unclosed tag fails fast) 71114 6.25 µs 7.03 µs 7.08 µs 7.67 µs

Reproduce

deno task bench:report
deno task bench:check
deno task bench:trends

Run this on an otherwise idle machine. The performance gate checks averages against committed budgets; this report also publishes sample count, minimum, p75, and p99 latency for the curious. The trends command stores its local history under benchmarks/.bench-history, compares each run with the last accepted baseline, and exits unsuccessfully when an average regresses by more than 20%. Set STENO_BENCH_TREND_THRESHOLD to a non-negative ratio to override that limit locally.

Type to search guides, configuration, Tau, plugins, and API references.