This commit is contained in:
Tobias Warneke
2021-07-09 18:27:52 +02:00
parent 9765052226
commit 24c3df1f39
3 changed files with 19 additions and 4 deletions

View File

@@ -87,9 +87,6 @@ public class MeyersDiffWithLinearSpace<T> implements DiffAlgorithmI<T> {
}
} else {
buildScript(data, start1, middle.start, start2, middle.start - middle.diag);
// for (int i = middle.getStart(); i < middle.getEnd(); ++i) {
// script.append(new KeepCommand<>(left.charAt(i)));
// }
buildScript(data, middle.end, end1, middle.end - middle.diag, end2);
}
}

View File

@@ -15,11 +15,14 @@
*/
package com.github.difflib.algorithm.myers;
import com.github.difflib.DiffUtils;
import com.github.difflib.algorithm.DiffAlgorithmListener;
import com.github.difflib.patch.Patch;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static java.util.stream.Collectors.toList;
import java.util.stream.IntStream;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
@@ -70,4 +73,19 @@ public class MeyersDiffWithLinearSpaceTest {
System.out.println(logdata);
assertEquals(8, logdata.size());
}
@Test
public void testPerformanceProblemsIssue124() {
List<String> old = Arrays.asList("abcd");
List<String> newl = IntStream.range(0, 90000)
.boxed()
.map(i -> i.toString())
.collect(toList());
long start = System.currentTimeMillis();
Patch<String> diff = DiffUtils.diff(old, newl, new MeyersDiffWithLinearSpace<String>());
long end = System.currentTimeMillis();
System.out.println("Finished in " + (end - start) + "ms and resulted " + diff.getDeltas().size() + " deltas");
}
}

View File

@@ -95,7 +95,7 @@ public class WithMeyersDiffWithLinearSpacePatchTest {
List<String> data = DiffUtils.patch(changeTest_from, patch);
assertEquals(11, data.size());
assertEquals(Arrays.asList("aaa", "<<<<<< HEAD", "bbb", "CDC", "======", "bbb", "ccc", ">>>>>>> PATCH", "ddd"), data);
assertEquals(Arrays.asList("aaa", "bxb", "cxc", "<<<<<< HEAD", "bbb", "CDC", "======", "bbb", "ccc", ">>>>>>> PATCH", "ddd"), data);
} catch (PatchFailedException e) {
fail(e.getMessage());