Commit b49de06
feat(bench): publication — first pinned-host run + canonical docs (SQLR-16, sub-phase 9.6) (#107)
Closes out the benchmark suite. Three deliverables:
1. scripts/compare.py — pure-stdlib Python diff renderer.
Reads two JSON envelopes, matches samples by (workload,
driver), prints a Markdown table with deltas + ratios.
Same-version-only per Q8; cross-host pairs flagged.
2. First "official" pinned-host run committed under
benchmarks/results/ — 35 samples across all 12 workloads
× {SQLRite, SQLite-WAL+NORMAL, DuckDB on Group B}. M1 Pro,
macOS 23.5.0, criterion defaults (3 s warm-up + 5 s
measurement, 100 samples on light workloads / 10 on heavy
ones). The header `dirty=true` flag reflects 9.6's working-
tree state at run time (this PR's docs uncommitted); the
measurements only depend on the bench binary built from
the committed bench-9.5-duckdb tip.
3. docs/benchmarks.md — canonical user-facing reference.
Mirrors how docs/fts.md is the canonical FTS reference
for Phase 8: TOC, quick-start, what-the-suite-measures
summary, reading-the-numbers methodology (Q3 SQLite
tuning, parser tax, DuckDB OLTP weakness), the headline
table, the engineering debts surfaced (SQLR-18 / 19 /
20 / 21), reproducing-a-run + comparing-two-runs sections,
and a "what's NOT measured" section.
Top-level README.md gains a "Benchmarks" section pointing
at docs/benchmarks.md. docs/_index.md promotes benchmarks.md
into a top-level reference (alongside fts.md), and demotes
benchmarks-plan.md to a "design rationale, historical" pointer.
Plan-doc status banner updated to "all six sub-phases shipped."
The benchmarks/results/.gitignore is rewritten — instead of
the strict "ignore everything until 9.6" rule, it now
documents the convention ("only pinned-host runs get
committed; PR review enforces it") and allows *.json files
to be added explicitly. Local runs still show up as
untracked in `git status`, which is the prompt to either
commit them as official or leave them out.
Verification:
- cargo fmt --all -- --check clean
- cargo clippy -p sqlrite-benchmarks --all-targets clean
- Full CI-equivalent build / test / doc green
(--exclude desktop / python / nodejs / benchmarks)
- cargo test -p sqlrite-benchmarks passes (5 tests)
- compare.py syntax-checked; round-trips a synthetic
envelope pair into a Markdown diff
- Official run completed: 35 samples, see
benchmarks/results/2026-05-07-apple-9ffd55a5.json
Refs: SQLR-16 (parent execution).
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 9ffd55a commit b49de06
8 files changed
Lines changed: 844 additions & 24 deletions
File tree
- benchmarks
- results
- scripts
- docs
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
117 | 123 | | |
118 | 124 | | |
119 | 125 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
| 34 | + | |
33 | 35 | | |
34 | 36 | | |
35 | 37 | | |
| |||
150 | 152 | | |
151 | 153 | | |
152 | 154 | | |
153 | | - | |
154 | | - | |
155 | | - | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | | - | |
166 | | - | |
167 | 155 | | |
168 | 156 | | |
169 | 157 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
0 commit comments