"Derrick Stolee via GitGitGadget" <gitgitgadget@xxxxxxxxx> 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