Re: [PATCH v4 0/7] Use generation numbers for --topo-order
From: Jakub Narebski <hidden>
Date: 2018-10-21 12:58:00
"Derrick Stolee via GitGitGadget" [off-list ref] writes:
This patch series performs a decently-sized refactoring of the revision-walk machinery. Well, "refactoring" is probably the wrong word, as I don't actually remove the old code. Instead, when we see certain options in the 'rev_info' struct, we redirect the commit-walk logic to a new set of methods that distribute the workload differently. By using generation numbers in the commit-graph, we can significantly improve 'git log --graph' commands (and the underlying 'git rev-list --topo-order'). 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
I wonder if we could make use of existing infrstructure in 't/perf/' to perform those benchmarks for us (perhaps augmented with large repository, and only if requested -- similarly to how long tests are handled). -- Jakub Narębski