]> Kevux Git Server - rit/commit
p1500: add is-base performance tests
authorDerrick Stolee <stolee@gmail.com>
Wed, 14 Aug 2024 10:31:30 +0000 (10:31 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Aug 2024 17:10:06 +0000 (10:10 -0700)
commit4b707a6e99651b1ba7c8718f95ee57c6721c85d6
treea34a63e2108aaabcfb06d36c8749961688899dfb
parent9c1732ca113d565e431b303911fcf66bfa1f8f56
p1500: add is-base performance tests

The previous two changes introduced a commit walking heuristic for finding
the most likely base branch for a given source. This algorithm walks
first-parent histories until reaching a collision.

This walk _should_ be very fast. Exceptions include cases where a
commit-graph file does not exist, leading to a full walk of all reachable
commits to compute generation numbers, or a case where no collision in the
first-parent history exists, leading to a walk of all first-parent history
to the root commits.

The p1500 test script guarantees a complete commit-graph file during its
setup, so we will not test that scenario. Do create a new root commit in an
effort to test the scenario of parallel first-parent histories.

Even with the extra root commit, these tests take no longer than 0.02
seconds on my machine for the Git repository. However, the results are
slightly more interesting in a copy of the Linux kernel repository:

Test
---------------------------------------------------------------
1500.2: ahead-behind counts: git for-each-ref              0.12
1500.3: ahead-behind counts: git branch                    0.12
1500.4: ahead-behind counts: git tag                       0.12
1500.5: contains: git for-each-ref --merged                0.04
1500.6: contains: git branch --merged                      0.04
1500.7: contains: git tag --merged                         0.04
1500.8: is-base check: test-tool reach (refs)              0.03
1500.9: is-base check: test-tool reach (tags)              0.03
1500.10: is-base check: git for-each-ref                   0.03
1500.11: is-base check: git for-each-ref (disjoint-base)   0.07

Signed-off-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/perf/p1500-graph-walks.sh