bench: publish 2026-07 refresh results - regenerated benchmarks page + committed artifacts#673
Conversation
…+ committed artifacts
Full gated run (20 cells x 3 arms, zero flags, single environment
fingerprint) on the released diff-diff 3.7.0 wheel vs R 4.5.2
(did 2.5.1 / fixest 0.14.2 / synthdid 0.0.9), Apple M4 Max:
- CallawaySantAnna: 4.6x (small) -> 15.5x (10k) / 14.8x (20k) faster
than R, advantage now GROWS with scale (previously published numbers
showed it shrinking, 11x -> 4x); exact SE parity (0.0%) and all
per-(g,t)/event-study/group surfaces at ~5e-11.
- SyntheticDiD: Rust backend 18-55x faster than R at matched
200-replication placebo variance (the invalidated published table
showed Rust SLOWER than pure Python); id-aligned unit/time weights
reproduce R at <= 5e-13; SE gaps 3.1-11.5% = documented placebo Monte
Carlo dispersion.
- Honest regressions published as-is: warmed-up fixest wins the sub-35ms
BasicDiD/TWFE interaction-OLS cells at 10k-20k (0.6-0.9x); pure-Python
SDID at equal bootstrap counts is 0.5-4.4x vs R (old 2.4-16.5x claim
reflected a 50-vs-200 replication asymmetry).
- MPDTA real data: exact ATT match (-0.039951), ~5x faster.
docs/benchmarks.rst fully regenerated from the committed artifact
(gen_benchmark_tables.py --check clean) with prose reconciled: new
median/warm-up protocol wording, split BasicDiD vs absorbed-FE TWFE
tables + estimator-mapping row, rewritten Rust-backend and SDID notes,
honest Key Observations, corrected stale gelsy/14x claims, refresh
harness documented as the source of the published tables (legacy runner
labeled). llms.txt Rust-backend line updated to the measured range.
Internal optimization story committed (version_story.{json,md}),
CS-focused per direction: CallawaySantAnna ~4.9-5.0x faster on the 3.7.0
wheel than 3.5.3 at 20k units and 2M rows with identical estimates;
BasicDiD/MultiPeriodDiD context rows 1.15-1.31x.
CHANGELOG updated with the public before/after; delivered phase-2 TODO
row removed.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GPX5Rv8ozQXPdUV23QTfjr
Overall Assessment✅ Looks good — no unmitigated P0/P1 findings. No estimator, math, weighting, variance/SE, identification, or default-behavior code changes were introduced. Executive Summary
Methodology
Code QualityNo findings. PerformanceNo findings. The headline speedups I spot-checked against the artifacts match the committed medians: CallawaySantAnna is ~4.6–15.4x vs R in MaintainabilityNo findings. Tech DebtNo findings. The completed benchmark-refresh TODO row was removed and no untracked deferred correctness issue was introduced. SecurityNo findings. The committed JSON artifacts redact Python paths with Documentation/Tests
Validation note: |
SyntheticDiD has a distinct variance_method="bootstrap"; the matched counts in the benchmark prose are placebo replications. Terminology aligned in docs/benchmarks.rst and CHANGELOG. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GPX5Rv8ozQXPdUV23QTfjr
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall Assessment✅ Looks good — no unmitigated P0/P1 findings. The PR changes benchmark artifacts, generated benchmark prose, TODO cleanup, and the internal version-story report; I found no estimator/math/default-behavior changes. Executive Summary
Methodology
Code QualityNo findings. The new PerformanceNo findings. The published timing tables are generated from per-arm median fields, consistent with the stated protocol: MaintainabilityNo findings. Tech DebtNo findings. The completed benchmark-refresh TODO row was removed, leaving no new untracked deferred correctness issue: SecurityNo findings. The JSON artifacts redact Python executable/package paths with Documentation/TestsNo findings. The previous review’s SyntheticDiD terminology issue is fixed in Validation note: |
Summary
gen_benchmark_tables.py --checkverifiesdocs/benchmarks.rstis byte-exact with the committed artifact.llms.txtRust line updated to the measured range.results/version_story.{json,md}, repo-internal, not in the docs toctree): CallawaySantAnna runs ~4.9-5.0x faster on the 3.7.0 wheel than 3.5.3 at every measured scale (360k through 2M rows) with identical estimates; BasicDiD/MultiPeriodDiD context rows at 1.15-1.31x. Report headline is data-derived and suppressed unless every CS cell is flag-free.Methodology references (required if estimator / math changes)
Validation
benchmarks/refresh_2026_07/results/refresh_results.json- 20 cells, zero flags, all parity gates (ATT/SE/CI per arm, per-(g,t)/event-study/group surfaces at ~5e-11, SDID id-aligned weights <= 5e-13, MPDTA known answer) green;gen_benchmark_tables.py --checkclean against the regenerated page.Security / privacy
Generated with Claude Code
🤖 Generated with Claude Code
https://claude.ai/code/session_01GPX5Rv8ozQXPdUV23QTfjr