Re: [PATCH 3/3] p2000: add performance test for 'git add -p'
- From
Elijah Newren <newren@gmail.com>
- Date
- May 10, 2025, 04:39 UTC
- Message-ID
- <CABPp-BG4XOqsHmQyaTEju=ZNk5vjGidzqQ=aW+vFMkmscV5KyQ@mail.gmail.com>
- In-Reply-To
- <7a777281626dc5fa9b191efe25442e0e856950e6.1746579321.git.gitgitgadget@gmail.com>
On Tue, May 6, 2025 at 5:55 PM Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com> wrote:
Show 46 quoted lines
> > From: Derrick Stolee <stolee@gmail.com> > > The previous two changes contributed performance improvements to 'git > apply' and 'git add -p' when using a sparse index. Add a performance > test to demonstrate this (and to help validate that performance remains > good in the future). > > In the truncated test output below, we see that the full checkout > performance changes within noise expectations, but the sparse index > cases improve 33% and then 96%. > > HEAD~3 HEAD~2 HEAD~1 > --------------------------------------------------------- > 2000.118: (full-v3) 0.80 0.84 +5.0% 0.84 +5.0% > 2000.119: (full-v4) 0.76 0.79 +3.9% 0.80 +5.3% > 2000.120: (sparse-v3) 2.09 1.39 -33.5% 0.07 -96.7% > 2000.121: (sparse-v4) 2.09 1.39 -33.5% 0.07 -96.7% > > It is worth noting that if our test was more involved and had multiple > hunks to evaluate, then the time spent in 'git apply' would dominate due > to multiple index loads and writes. As it stands, we need the sparse > index improvement in 'git add -p' itself to confirm this performance > improvement. > > Since the change for 'git add -i' is identical, we avoid a second test > case for that similar operation. > > Signed-off-by: Derrick Stolee <stolee@gmail.com> > --- > t/perf/p2000-sparse-operations.sh | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/t/perf/p2000-sparse-operations.sh b/t/perf/p2000-sparse-operations.sh > index 39e92b084143..3da6ae59c000 100755 > --- a/t/perf/p2000-sparse-operations.sh > +++ b/t/perf/p2000-sparse-operations.sh > @@ -135,5 +135,6 @@ test_perf_on_all git diff-tree HEAD > test_perf_on_all git diff-tree HEAD -- $SPARSE_CONE/a > test_perf_on_all "git worktree add ../temp && git worktree remove ../temp" > test_perf_on_all git check-attr -a -- $SPARSE_CONE/a > +test_perf_on_all 'echo >>a && test_write_lines y | git add -p' > > test_done > -- > gitgitgadget
Very nice!