diff options
author | Elijah Newren <newren@gmail.com> | 2021-03-11 00:38:29 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-03-10 22:18:05 -0800 |
commit | 174791f0fb23e29de1d879c1aae3a164bb998885 (patch) | |
tree | c47ef46f6a2ff8e7ba7d686645f37c10f38d80bf | |
parent | merge-ort: precompute whether directory rename detection is needed (diff) | |
download | tgif-174791f0fb23e29de1d879c1aae3a164bb998885.tar.xz |
merge-ort: use relevant_sources to filter possible rename sources
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 s
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | merge-ort.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/merge-ort.c b/merge-ort.c index 5840832cf3..eea14024c6 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -2208,7 +2208,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); |