Skip to content

Commit 327251c

Browse files
committed
Merge pull request #996 from jeffhostetler/jeffhostetler/register_rename_src
diffcore-rename: speed up register_rename_src
2 parents a1ceaf9 + 734bc18 commit 327251c

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

diffcore-rename.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,18 @@ static struct diff_rename_src *register_rename_src(struct diff_filepair *p)
8484

8585
first = 0;
8686
last = rename_src_nr;
87+
88+
if (last > 0) {
89+
struct diff_rename_src *src = &(rename_src[last-1]);
90+
int cmp = strcmp(one->path, src->p->one->path);
91+
if (!cmp)
92+
return src;
93+
if (cmp > 0) {
94+
first = last;
95+
goto append_it;
96+
}
97+
}
98+
8799
while (last > first) {
88100
int next = first + ((last - first) >> 1);
89101
struct diff_rename_src *src = &(rename_src[next]);
@@ -97,6 +109,7 @@ static struct diff_rename_src *register_rename_src(struct diff_filepair *p)
97109
first = next+1;
98110
}
99111

112+
append_it:
100113
/* insert to make it at "first" */
101114
ALLOC_GROW(rename_src, rename_src_nr + 1, rename_src_alloc);
102115
rename_src_nr++;

0 commit comments

Comments
 (0)