Merge branch 'sb/indent-heuristic-optim'
"git diff --indent-heuristic" had a bad corner case performance. * sb/indent-heuristic-optim: xdiff: reduce indent heuristic overhead
This commit is contained in:
commit
791ad49483
@ -574,6 +574,11 @@ static void measure_split(const xdfile_t *xdf, long split,
|
||||
*/
|
||||
#define INDENT_WEIGHT 60
|
||||
|
||||
/*
|
||||
* How far do we slide a hunk at most?
|
||||
*/
|
||||
#define INDENT_HEURISTIC_MAX_SLIDING 100
|
||||
|
||||
/*
|
||||
* Compute a badness score for the hypothetical split whose measurements are
|
||||
* stored in m. The weight factors were determined empirically using the tools and
|
||||
@ -886,7 +891,12 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags) {
|
||||
long shift, best_shift = -1;
|
||||
struct split_score best_score;
|
||||
|
||||
for (shift = earliest_end; shift <= g.end; shift++) {
|
||||
shift = earliest_end;
|
||||
if (g.end - groupsize - 1 > shift)
|
||||
shift = g.end - groupsize - 1;
|
||||
if (g.end - INDENT_HEURISTIC_MAX_SLIDING > shift)
|
||||
shift = g.end - INDENT_HEURISTIC_MAX_SLIDING;
|
||||
for (; shift <= g.end; shift++) {
|
||||
struct split_measurement m;
|
||||
struct split_score score = {0, 0};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user