diff - sistemas - tecnicas de vision por computadora
Ejemplos de diferentes resultados producidos por los algoritmos estándar(Myers), minimal, paciencia e histograma diff (1)
Git ofrece estos 4 algoritmos de diferencias, pero sin más información cuáles son sus diferencias.
¿Cuáles son las ventajas de cada uno de estos algoritmos? ¿Hay alguna comparación de varios casos donde los algoritmos funcionan de manera diferente?
Creo que hay múltiples algoritmos compatibles porque ninguno de los algoritmos es claramente la mejor opción en todos los casos.
Las diferencias están en la legibilidad de la salida del parche y el tiempo de procesamiento necesario para generar el parche.
Resumiendo, esto es lo que entiendo las diferencias son:
- Myers: el algoritmo original tal como se implementó en xdiff ( http://www.xmailserver.org/xdiff-lib.html y http://www.xmailserver.org/diff2.pdf ), optimizando la ''distancia de edición'' para las líneas modificadas .
- Mínimo: Myers además de intentar minimizar el tamaño del parche.
- Paciencia: intenta intercambiar la legibilidad del parche frente al tamaño del parche y el tiempo de procesamiento. Ver ¿Qué es `git diff --patience` para? y http://bramcohen.livejournal.com/73318.html o http://alfedenzo.livejournal.com/170301.html para obtener una descripción.
- Histograma: creado principalmente para la velocidad. Más rápido que Myers and Patience, desarrollado originalmente en jgit ( http://eclipse.org/jgit/ )
Aquí hay una comparación de velocidad para Myers, paciencia e histograma: http://marc.info/?l=git&m=133103975225142&w=2
Aquí hay una comparación de la producción de diff de Histogram vs Myers: http://marc.info/?l=git&m=138023003519837&w=2