Skip to content

Commit 37f16a8

Browse files
authored
Fixes #163931 (#164802)
1 parent ba91a81 commit 37f16a8

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

src/vs/editor/common/diff/algorithms/myersDiffAlgorithm.ts

+8
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ import { IDiffAlgorithm, ISequence, SequenceDiff, OffsetRange } from 'vs/editor/
1010
*/
1111
export class MyersDiffAlgorithm implements IDiffAlgorithm {
1212
compute(seq1: ISequence, seq2: ISequence): SequenceDiff[] {
13+
// These are common special cases.
14+
// The early return improves performance dramatically.
15+
if (seq1.length === 0) {
16+
return [new SequenceDiff(new OffsetRange(0, 0), new OffsetRange(0, seq2.length))];
17+
} else if (seq2.length === 0) {
18+
return [new SequenceDiff(new OffsetRange(0, seq1.length), new OffsetRange(0, 0))];
19+
}
20+
1321
function getXAfterSnake(x: number, y: number): number {
1422
while (x < seq1.length && y < seq2.length && seq1.getElement(x) === seq2.getElement(y)) {
1523
x++;

0 commit comments

Comments
 (0)