On Mon, Jan 20, 2014 at 04:28:45PM -0500, Jeff King wrote:
[1/2]: t/perf: time rev-list with UNINTERESTING commits
[2/2]: list-objects: only look at cmdline trees with edge_hint
Here's t/perf/p0001 output that shows the problem:
0001.5: rev-list --objects $commit --not --all
fbd4a703^ fbd4a703 HEAD
0.04(0.04+0.00) 0.28(0.27+0.00) +600.0% 0.04(0.04+0.00) +0.0%
Those numbers are on git.git. Obviously 600% is a lot, but 24ms is not.
However, the cost is a factor of the tree size times the number of refs.
For the "homebrew.git" repository stored at GitHub, which has ~28,000
refs (mostly pointing at pull-request tips in refs/pull), the numbers
are much more dramatic:
fbd4a703^ fbd4a703 HEAD
0.50(0.46+0.02) 8.23(8.17+0.06) +1546.0% 0.50(0.48+0.01) +0.0%
-Peff