better-diff
better-diff copied to clipboard
Symetric difference optimization
Primero tomar la diferencia entre los node kind map y los que faltan de un lado marcarlos como add/del
function symmetricDifference(map1: Map<number, any>, map2: Map<number, any>) {
const missingInFirst = new Map<number, any>();
const missingInSecond = new Map<number, any>();
for (const [key, value] of map1.entries()) {
if (!map2.has(key)) {
missingInFirst.set(key, value);
}
}
for (const [key, value] of map2.entries()) {
if (!map1.has(key)) {
missingInSecond.set(key, value);
}
}
return {
missingInFirst,
missingInSecond,
};
}
const res = symmetricDifference(iterA.kindTable, iterB.kindTable)
for (const x of res.missingInFirst.keys()) {
}
Despues, otra podria ser seria rankear los que tengan mayor differencia, por ejemplo tal vez numeros de un lado hay 10 y del otro 1000, una diferencia de 990, empezar por estos asi ya sabemos que el resto estan de mas y los reportamos como add/del
La idea principal es que me di cuenta que el algoritmo reporta muchos nodos simples, tal vez con esto podamos empezar por ahi antes y hacerlo mas rapido.
Tener en cuenta la idea de hacer que la tabla sea mutable, ahora tenemos que traernos los indexes y chekear si estan matched o no, si cada vez que marcamos actualizamos la tabla podemos borrar esta parte y nos va a servir con la idea de arriba