[PATCH v2 6/8] merge-ort: use relevant_sources to filter possible rename sources
- From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Mar 9, 2021, 00:09 UTC
- Message-ID
- <d62fdee45ad344a09062e2ab73702d1093c12efc.1615248599.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.845.v2.git.1615248599.gitgitgadget@gmail.com>
From: Elijah Newren <newren@gmail.com>
The past several commits determined conditions when rename sources might be needed, and filled a relevant_sources strset with those paths. Pass these along to diffcore_rename_extended() to use to limit the sources that we need to detect renames for.
For the testcases mentioned in commit 557ac0350d ("merge-ort: begin performance work; instrument with trace2_region_* calls", 2020-10-28), this change improves the performance as follows:
Before After
no-renames: 12.596 s ± 0.061 s 6.003 s ± 0.048 s
mega-renames: 130.465 s ± 0.259 s 114.009 s ± 0.236 s
just-one-mega: 3.958 s ± 0.010 s 3.489 s ± 0.017 sSigned-off-by: Elijah Newren <newren@gmail.com> --- merge-ort.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/merge-ort.c b/merge-ort.c index 27acaa7380be..66892c63cee2 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -2209,7 +2209,7 @@ static void detect_regular_renames(struct merge_options *opt, diff_queued_diff = renames->pairs[side_index]; trace2_region_enter("diff", "diffcore_rename", opt->repo); diffcore_rename_extended(&diff_opts, - NULL, + &renames->relevant_sources[side_index], &renames->dirs_removed[side_index], &renames->dir_rename_count[side_index]); trace2_region_leave("diff", "diffcore_rename", opt->repo);
-- gitgitgadget