node-diff3 icon indicating copy to clipboard operation
node-diff3 copied to clipboard

Poor performance

Open denis-sokolov opened this issue 1 year ago • 1 comments

Diff3.diffComm(a, b) where a and b are lists of words totalling about 20,000 characters each takes about 10 seconds on my laptop. This seems to be an uncharacteristically poor performance. With some simple testing, it seems to be O(n³).

In contrast, in the same time diffWords from diff performs a diff on strings of 20,000,000 characters each. I have not compared what algorithm it uses.

Diff3.diff3Merge(a, b, original) with a and original being identical 100,000 character strings, and b an empty string takes about 20 seconds on my laptop.

denis-sokolov avatar Aug 27 '24 01:08 denis-sokolov

Hey @denis-sokolov,

I was looking for a 3-way-diff library, and thanks to your comment I looked for other libraries that would have better performances. I ended up finding this lib, which is actually just a script, but that's enough for me (also no dependencies). It is ~1000x faster than this lib for long strings (~100k characters), same as you measured for diffWords.

So if you ever need a 3-way-diff lib, you might be interested in this one 👍

EmmanuelJego avatar Aug 29 '24 08:08 EmmanuelJego