grit://cooking/bench/branch/merged-ref@many-refs
← cookingall benchmarksraw data

grit branch · merged-ref @many-refs

Branch --merged ref query vs git for-each-ref on many-refs

repo: 10,000 packed refs · 200 files · 1,000 commits · 10,000 refs

$ grit-bench daily --only branch/merged-ref@many-refs2026-10-27 · grit 8dbc58e77 · git version 2.43.0
toolmedianminmaxrunspeak memory
git0.8 ms0.5 ms0.9 ms206.0 MB
grit1.9 ms1.5 ms2.1 ms2011 MB
grit is 2.5× slowermemory: 1.8× more
every timed run (log scale)
git
grit
0.4 ms2.6 ms
How it's measured
git runs
$ git for-each-ref refs/heads/ --merged=b2c0606217709fa3f65c3d522c290687721998c7 --format=%(refname)
grit runs
$ grit-bench refs-driver ref-query /tmp/grit-bench-scratch/daily-bounded-branch-contains/worktree-run-many-refs --namespace heads --merged b2c0606217709fa3f65c3d522c290687721998c7
notes
grit trace: traced run wrote no trace to /tmp/grit-daily-trace-551938-grit.txt
Where the time goesone extra traced run per tool, outside the timed runs
— no phase timings for this scenario yet. They come from a traced run of each tool (GIT_TRACE2_PERF for git, GRIT_TRACE for grit).
Every day8 days
dategrit commitgitgritgrit vs gitgrit peak
2026-10-278dbc58e770.8 ms1.9 ms2.5× slower11 MB
2026-10-26c7cf2c4431.3 ms2.9 ms2.2× slower11 MB
2026-10-252824ad3910.8 ms1.9 ms2.5× slower10 MB
2026-10-24157a05dde1.1 ms2.2 ms1.9× slower11 MB
2026-10-23bddf92f861.1 ms2.3 ms2.0× slower10 MB
2026-10-224c131b942—not run——
2026-10-21d4844e92a—not run——
2026-10-204754ad0b9—not run——