diff: Optimize single line edits
If the header and trailer are identical up to a single line on both sides, return that REPLACE edit as the only result. No algorithm can break down a REPLACE with height of 1. Change-Id: I483c40e8790cc3e8b322ef6dfce2299491fd0ac7
This commit is contained in:
parent
6de12836d7
commit
cbc7c5c03f
|
@ -114,6 +114,9 @@ public <S extends Sequence> EditList diff(
|
|||
return EditList.singleton(region);
|
||||
|
||||
case REPLACE: {
|
||||
if (region.getLengthA() == 1 && region.getLengthB() == 1)
|
||||
return EditList.singleton(region);
|
||||
|
||||
SubsequenceComparator<S> cs = new SubsequenceComparator<S>(cmp);
|
||||
Subsequence<S> as = Subsequence.a(a, region);
|
||||
Subsequence<S> bs = Subsequence.b(b, region);
|
||||
|
|
|
@ -192,7 +192,10 @@ private void diff(Edit r) {
|
|||
break;
|
||||
|
||||
case REPLACE:
|
||||
diffReplace(r);
|
||||
if (r.getLengthA() == 1 && r.getLengthB() == 1)
|
||||
edits.add(r);
|
||||
else
|
||||
diffReplace(r);
|
||||
break;
|
||||
|
||||
case EMPTY:
|
||||
|
|
Loading…
Reference in New Issue