11# Non-Functional Baselines
22
3- Measured on: 2026-02-13
3+ Measured on: 2026-02-14 (v0.2.0)
44Platform: macOS ARM64 (Apple M4 Pro), Zig 0.15.2
55Binary: ReleaseSafe
66
@@ -11,9 +11,9 @@ Fix the regression first. No exceptions without explicit user approval.
1111
1212| Metric | Baseline | Threshold | Margin | How to measure |
1313| ---------------------| ------------| ------------| --------| ---------------------------------------------|
14- | Binary size | 3.65 MB | 4.0 MB | +10% | ` stat -f%z zig-out/bin/cljw ` (after ReleaseSafe build) |
15- | Startup time | 4.0 ms | 5 ms | 1.25x | ` hyperfine -N --warmup 3 --runs 5 './zig-out/bin/cljw -e nil' ` |
16- | RSS (light) | 11.4 MB | 12 MB | +5% | ` /usr/bin/time -l ./zig-out/bin/cljw -e nil 2>&1 \| grep 'maximum resident' ` |
14+ | Binary size | 3.90 MB | 4.0 MB | +3% | ` stat -f%z zig-out/bin/cljw ` (after ReleaseSafe build) |
15+ | Startup time | 4.2 ms | 5 ms | 1.19x | ` hyperfine -N --warmup 3 --runs 5 './zig-out/bin/cljw -e nil' ` |
16+ | RSS (light) | 8.0 MB | 12 MB | +50% | ` /usr/bin/time -l ./zig-out/bin/cljw -e nil 2>&1 \| grep 'maximum resident' ` |
1717| Benchmark (any) | see below | 1.2x | +20% | ` bash bench/run_bench.sh --quick ` |
1818
1919## Benchmark Regression Policy
@@ -30,30 +30,30 @@ If any benchmark exceeds 1.2x baseline:
3030
3131Never accept "this feature needs to be slower" — find a way to keep it fast.
3232
33- ## Benchmark Baselines (2026-02-13, single run )
33+ ## Benchmark Baselines (2026-02-14, v0.2.0, hyperfine 5 runs )
3434
3535| Benchmark | Time (ms) | Ceiling (ms) |
3636| ------------------------| -----------| --------------|
3737| fib_recursive | 18 | 22 |
38- | fib_loop | 9 | 11 |
39- | tak | 14 | 17 |
40- | arith_loop | 10 | 12 |
41- | map_filter_reduce | 14 | 17 |
42- | vector_ops | 12 | 14 |
43- | map_ops | 15 | 18 |
44- | list_build | 11 | 13 |
45- | sieve | 13 | 16 |
46- | nqueens | 19 | 23 |
47- | atom_swap | 11 | 13 |
48- | gc_stress | 33 | 40 |
49- | lazy_chain | 13 | 16 |
50- | transduce | 12 | 14 |
51- | keyword_lookup | 15 | 18 |
52- | protocol_dispatch | 11 | 13 |
53- | nested_update | 15 | 18 |
54- | string_ops | 27 | 32 |
55- | multimethod_dispatch | 11 | 13 |
56- | real_workload | 13 | 16 |
38+ | fib_loop | 5 | 6 |
39+ | tak | 8 | 10 |
40+ | arith_loop | 5 | 6 |
41+ | map_filter_reduce | 6 | 7 |
42+ | vector_ops | 6 | 7 |
43+ | map_ops | 5 | 6 |
44+ | list_build | 4 | 5 |
45+ | sieve | 5 | 6 |
46+ | nqueens | 15 | 18 |
47+ | atom_swap | 5 | 6 |
48+ | gc_stress | 26 | 31 |
49+ | lazy_chain | 6 | 7 |
50+ | transduce | 7 | 8 |
51+ | keyword_lookup | 12 | 14 |
52+ | protocol_dispatch | 38 | 46 |
53+ | nested_update | 10 | 12 |
54+ | string_ops | 24 | 29 |
55+ | multimethod_dispatch | 5 | 6 |
56+ | real_workload | 10 | 12 |
5757
5858Wasm benchmarks excluded from regression gate (higher variance, dominated by zwasm).
5959
0 commit comments