Примеры различных результатов, полученных стандартными (Myers), минимальными, терпениями и алгоритмами сравнения гистограмм Git предлагает эти 4 алгоритма diff, но без какой-либо дополнительной информации, каковы их отличия. В чем преимущества каждого из этих алгоритмов? Существует ли сравнение различных случаев, когда алгоритмы выполняются по-разному? Ответ 1 Я думаю, что поддерживаются несколько алгоритмов, потому что ни один из алгоритмов не является лучшим выбором во всех случаях. Различия заключаются в возможности считывания выходного патча и времени обработки, необходимого для создания патча. Подводя итог, я понимаю, что эти различия: Myers: оригинальный алгоритм, реализованный в xdiff (http://www.xmailserver.org/xdiff-lib.html и http://www.xmailserver.org/diff2.pdf), оптимизируя "расстояние редактирования" для измененных строк. Минимальное: Myers плюс попытка минимизировать размер патча. Терпение. Попытка улучшить читаемость патча по сравнению с размером патча и временем обработки. См. Что такое` git diff -patience` для? и http://bramcohen.livejournal.com/73318.html или http://alfedenzo.livejournal.com/170301.html для описания. Гистограмма: в основном создана для скорости. Быстрее, чем Myers and Patience, изначально разработанный в jgit (http://eclipse.org/jgit/) Вот сравнение скорости для Майерса, терпения и гистограммы: http://marc.info/?l=git&m=133103975225142&w=2 Здесь сравнивается вывод diff из Histogram vs Myers: http://marc.info/?l=git&m=138023003519837&w=2
Ответ 1 Я думаю, что поддерживаются несколько алгоритмов, потому что ни один из алгоритмов не является лучшим выбором во всех случаях. Различия заключаются в возможности считывания выходного патча и времени обработки, необходимого для создания патча. Подводя итог, я понимаю, что эти различия: Myers: оригинальный алгоритм, реализованный в xdiff (http://www.xmailserver.org/xdiff-lib.html и http://www.xmailserver.org/diff2.pdf), оптимизируя "расстояние редактирования" для измененных строк. Минимальное: Myers плюс попытка минимизировать размер патча. Терпение. Попытка улучшить читаемость патча по сравнению с размером патча и временем обработки. См. Что такое` git diff -patience` для? и http://bramcohen.livejournal.com/73318.html или http://alfedenzo.livejournal.com/170301.html для описания. Гистограмма: в основном создана для скорости. Быстрее, чем Myers and Patience, изначально разработанный в jgit (http://eclipse.org/jgit/) Вот сравнение скорости для Майерса, терпения и гистограммы: http://marc.info/?l=git&m=133103975225142&w=2 Здесь сравнивается вывод diff из Histogram vs Myers: http://marc.info/?l=git&m=138023003519837&w=2