]> git.ipfire.org Git - thirdparty/git.git/commit
p6011: add perf test for rev-list --maximal-only
authorDerrick Stolee <stolee@gmail.com>
Mon, 6 Apr 2026 13:27:27 +0000 (13:27 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Apr 2026 19:02:30 +0000 (12:02 -0700)
commite8e5453ab8794cf29afe0a616d74319442b676bd
treeb09152e1583945b54b303f4affafcb58d0233a85
parent295fb82264cc8be565a5da8259b103cbc6a41728
p6011: add perf test for rev-list --maximal-only

Add a performance test that compares 'git rev-list --maximal-only'
against 'git merge-base --independent'. These two commands are asking
essentially the same thing, but the rev-list implementation is more
generic and hence slower. These performance tests will demonstrate that
in the current state and also be used to show the equivalence in the
future.

We also add a case with '--since' to force the generic walk logic for
rev-list even when we make that future change to use the merge-base
algorithm on a simple walk.

When run on my copy of git.git, I see these results:

  Test                                      HEAD
  ----------------------------------------------
  6011.2: merge-base --independent          0.03
  6011.3: rev-list --maximal-only           0.06
  6011.4: rev-list --maximal-only --since   0.06

These numbers are low, but the --independent calculation is interesting
due to having a lot of local branches that are actually independent.

Running the same test on a fresh clone of the Linux kernel repository
shows a larger difference between the algorithms, especially because the
--independent algorithm is extremely fast when there are no independent
references selected:

  Test                                      HEAD
  ----------------------------------------------
  6011.2: merge-base --independent          0.00
  6011.3: rev-list --maximal-only           0.70
  6011.4: rev-list --maximal-only --since   0.70

Signed-off-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/perf/p6011-rev-list-maximal.sh [new file with mode: 0755]