From: Derrick Stolee Date: Fri, 21 Sep 2018 15:47:45 GMT Subject: Re: [PATCH v2 0/6] Use generation numbers for --topo-order Message-ID: <2d72ae31-774e-d0a4-8b6c-ea125377eac5@gmail.com> In-Reply-To: <87worjjq6o.fsf@evledraar.gmail.com> On 9/18/2018 2:05 AM, Ævar Arnfjörð Bjarmason wrote: > On Tue, Sep 18 2018, Derrick Stolee via GitGitGadget wrote: > > Thanks. Good to see the commit graph used for more stuff. > >> On the Linux repository, I got the following performance results when >> comparing to the previous version with or without a commit-graph: >> >> Test: git rev-list --topo-order -100 HEAD >> HEAD~1, no commit-graph: 6.80 s >> HEAD~1, w/ commit-graph: 0.77 s >> HEAD, w/ commit-graph: 0.02 s >> >> Test: git rev-list --topo-order -100 HEAD -- tools >> HEAD~1, no commit-graph: 9.63 s >> HEAD~1, w/ commit-graph: 6.06 s >> HEAD, w/ commit-graph: 0.06 s > It would be great if this were made into a t/perf/ test shipped with > this series, that would be later quoted in a commit, as in > e.g. 3b41fb0cb2 ("fsck: use oidset instead of oid_array for skipList", > 2018-09-03). > > Although generalizing that "-- tools" part (i.e. finding a candidate > dir) will require some heuristic, but would make it useful when running > this against other erpos. t/perf/p4211-line-log.sh has the following test:     test_perf 'git log --oneline --raw --parents -1000' '             git log --oneline --raw --parents -1000 >/dev/null     ' We could add the following to the end of that script to get similar values, since it already selects a file randomly at the top of the script:     test_perf 'git log --oneline --raw --parents -1000 -- ' '             git log --oneline --raw --parents -1000 -- $file >/dev/null     ' > >> If you want to read this series but are unfamiliar with the commit-graph and >> generation numbers, then I recommend reading >> Documentation/technical/commit-graph.txt or a blob post [1] I wrote on the >> subject. In particular, the three-part walk described in "revision.c: >> refactor basic topo-order logic" is present (but underexplained) as an >> animated PNG [2]. > We discussed some of this in private E-Mail, and this isn't really > feedback on *this* series in particular, just on the general > commit-graph work. > > Right now git-config(1) just matter-of-factly says how to enable it, and > points to git-commit-graph(1) for further info, which just shows how to > run the tool. But nothing's describing what stuff is sped up, and those > sorts of docs aren't being updated as new optimizations (e.g. this > --topo-order walk) are added. > > For that you need to scour a combination of your blogpost & commits in > git.git (with quoted perf numbers). Thanks for reminding me. I have this on my list of TODOs. -Stolee