On Thu, May 23, 2024 at 03:53:08PM -0400, Taylor Blau wrote: > - GIT_TEST_USE_PSEDUO_MERGES=0 \ > + GIT_TEST_USE_PSEUDO_MERGES=0 \ Whoops. > Sure enough, that shows us a little gap between the "no pseudo-merges" > and "with pseudo-merges" case: > > ``` > Test this tree > ----------------------------------------------------------------------------------- > 5333.2: git rev-list --count --all --objects (no bitmaps) 3.54(3.45+0.08) > 5333.3: git rev-list --count --all --objects (no pseudo-merges) 0.43(0.40+0.03) > 5333.4: git rev-list --count --all --objects (with pseudo-merges) 0.12(0.11+0.01) > ``` OK, that seems more like it. 300ms is nice, but there's just not that much improvement to make here. This one is much more exciting: > ``` > Test this tree > --------------------------------------------------------------------------------------- > 5333.1: git rev-list --count --all --objects (no bitmaps) 122.29(121.31+0.97) > 5333.2: git rev-list --count --all --objects (no pseudo-merges) 21.88(21.30+0.58) > 5333.3: git rev-list --count --all --objects (with pseudo-merges) 5.05(4.77+0.28) > ``` Very nice improvement. I wonder what we spend the final 5s on. Maybe just book-keeping to assemble all the tips (and maybe even parse tip commits? I can't remember if we ever optimized that out). Anyway, that's all out of scope for your series. Getting rid of the expensive traversal would let us focus on those final bits. ;) -Peff