Perf bug: rev-list w/ 2+ paths relatively slow with commit-graph
From: Kai Koponen <hidden>
Date: 2025-06-23 17:58:16
Reproduce steps:
git clone https://github.com/golang/go.git
cd go
git config core.commitGraph true
git commit-graph write --split --reachable --changed-paths # Without
this, all calls equally slow (~1s)
time git rev-list -10 3730814f2f2bf24550920c39a16841583de2dac1 --
src/clean.bash > /dev/null # ~90ms
time git rev-list -10 3730814f2f2bf24550920c39a16841583de2dac1 --
src/Make.dist > /dev/null # ~100ms
time git rev-list -10 3730814f2f2bf24550920c39a16841583de2dac1 --
src/clean.bash src/Make.dist > /dev/null # ~650ms
The rev-list call with multiple paths takes over 3x longer than the sum of individual calls to it for the same files. Expectation: rev-list with multiple paths should take <= the sum of the time it takes to call it with each path individually (ideally <, since with the count limit it should be able to early-exit and search less commits for either path). Also reproduces without the -10 arg, or with a lower count (double instead of triple w/ -1), but these results are perhaps most surprising with a count present.