Skip to content

feat: add forge-benchmarks crate#2

Draft
joeycarpinelli wants to merge 1 commit intomainfrom
feat/benchmarks
Draft

feat: add forge-benchmarks crate#2
joeycarpinelli wants to merge 1 commit intomainfrom
feat/benchmarks

Conversation

@joeycarpinelli
Copy link
Contributor

Summary

Adds crates/forge-benchmarks — a Criterion benchmark suite measuring Git's object store and ref model against Forge's data access patterns at realistic scale.

Benchmarks (28 cases total)

# Group Scale inputs
1 issue_creation N = 100, 1 000, 10 000
2 issue_listing N = 100, 1 000, 10 000
3 comment_lookup total = 100, 500, 1 000
4 link_traversal N = 10, 100, 500
5 approval_lookup P = 10, 100, 1 000 (hit + miss)
6 auto_merge N = 10, 100, 500 (clean + conflict)
7 reanchoring N = 1, 10, 50

All repos are bare with no remotes. Results tables in README.md are left blank for you to populate after a real run.

Changes

  • crates/forge-benchmarks/ — new crate (publish = false)
  • Cargo.toml — workspace member added
  • .config/release-please-config.json / manifest.json — crate registered
  • .github/workflows/CD.ymlforge-benchmarks excluded from cargo publish; benchmark smoke-test job added

Seven Criterion benchmarks covering Forge's core data access patterns
at realistic scale: issue creation (CAS protocol), issue listing (ref
glob), comment lookup (blob-anchored), link traversal, approval
lookup (hit and miss), metadata auto-merge (clean and conflict), and
comment reanchoring.

All benchmarks run against fresh bare repositories with no remotes.
Each benchmark group is parameterised by scale (N) so that the N at
which latency degrades is clearly visible in the Criterion HTML output.

The crate is publish = false and is excluded from cargo publish in
the CD workflow. A smoke-test job runs all 28 benchmark cases with
--test on every release to guard against regressions.

Assisted-by: Zed (Claude Sonnet 4.6)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant