OpenBSD에서의 구현에는 다음 문서와 함께 diff
비표준 옵션이 있습니다 .-d
-d
가능한 한 작은 차이를 만들려고 노력하십시오. 이는 많은 변경 사항이 포함된 대용량 파일로 작업할 때 많은 처리 능력과 메모리를 소모할 수 있습니다.
GNU diff
구현에는 동일한 옵션이 있지만 문서가 더 짧습니다.
-d
,--minimal
더 작은 변경 사항을 찾아보세요.
diff
때로는 옵션 없이 동일한 명령을 실행했을 때와 다른 모양이나 형태의 출력이 생성되는지 확인하기 위해 이 옵션을 사용하지만안 돼요차이가 없습니다(말장난 의도 없음).
누군가가 이 옵션이 실제로 원하지 않는 동일한 명령에서 다른 결과를 생성하는 예를 제공하거나 지적할 수 있습니까 -d
? 또는 누군가가 이 옵션을 시작하는 데 필요한 것이 무엇인지 설명할 수 있는 경우. 또한 "최소"가 "출력 줄 수가 적음"인지 "덩어리 수가 적음"을 의미하는지 확실하지 않습니다.
확인되지 않은 추측 중 하나는 그것이 매우 큰 덩어리와 관련이 있다는 것입니다.
답변1
GNU diff
(FreeBSD에서도 사용됨)에서 이 플래그는 Paul Eggert 알고리즘의 변형을 실행하여 " 차이가 있는 대규모 입력에 대해 차선의 출력을 생성하는 비용을 --minimal
제한"하게 합니다 . O(N**1.5 log N)
보다 구체적으로 말하면 다음과 같은 결과가 나타납니다.아니요여러 가지 휴리스틱을 적용하여 다음을 찾습니다.폐쇄최상의 솔루션을 찾고 추가 차이점으로 "혼란스러운" 줄을 삭제합니다.
OpenBSD에서는 Harold Stone의 알고리즘을 사용하는 diff
1970년대의 오래된 Unix 알고리즘을 사용합니다 .diff
--minimal
깃발비교되는 줄 범위 크기(또는 더 큰 경우 256)의 제곱근이 아닌 부호 없는 정수의 최대값으로 제한되는(실제로는 그렇지 않은) 검색을 트리거합니다.
추가 읽기
- 유진 W. 마이어스(1986년 11월). "O(ND) 차이 알고리즘 및 그 변형".연산. 1권. 이슈 1-4. 251~266페이지. 도이10.1007/BF01840446.
- JW Hunter와 MD McIlroy(1976년 6월). "차등 파일 비교 알고리즘". 보고서 41.계산과학. 벨 연구소.
- 리차드 하트만(1988-01-13). Unix diff(1) 알고리즘. [이메일 보호됨]. comp.unix.problem.
- https://github.com/openbsd/src/blob/d1e24f318523607c98dc6fbe5a06a5d9e5c87293/usr.bin/diff/diffreg.c#L93
- https://github.com/freebsd/freebsd/blob/40ec4fdc9a74bfdb83f13672acdb88af5c91ab46/contrib/diff/src/analyze.c#L23
- diff 알고리즘, 그 역사 및 구현에 대한 포괄적인 검토