diff
OpenBSD에서 의 구현 -d
에는 다음과 같은 비표준 옵션이 있습니다.
-d
diff를 가능한 작게 만들기 위해 매우 열심히 노력하십시오. 변경 사항이 많은 대용량 파일을 처리 할 때 처리 능력과 메모리가 많이 소모 될 수 있습니다.
GNU diff
구현은 더 짧은 문서와 동일한 옵션을 갖습니다.
-d
,--minimal
더 작은 변화를 찾으려고 노력하십시오
때때로 나는 그것이 같은에서 어떤 모양이나 형태 다른 인 출력을 생성하는 경우 만 보려면이 옵션을 사용했습니다 diff
옵션없이 명령을,하지만 난 적이 결코 (웃기려는 의도 없음) 차이를 보이지 않는다.
누군가이 옵션이 실제로 동일한 명령에서 다른 결과를 생성하는 예제를 제공하거나 가리킬 수 -d
있습니까? 다른 사람이이 옵션을 시작하는 데 필요한 상황을 설명 할 수 있다면 “최소”가 “작은 출력 줄”또는 “더 적은 덩어리”를 의미하는지 확실하지 않습니다.
교육받지 못한 추측은 큰 덩어리와 관련이 있다는 것입니다.
답변
diff
FreeBSD에서도 사용되는 GNU 에서 --minimal
플래그는 Paul Eggert의 알고리즘 변형을 트리거하여 ” O(N**1.5 log N)
차이가있는 큰 입력에 대해 차선의 출력을 생성하는 가격으로 비용을 제한합니다 “. 보다 구체적으로, 그것은 단지 최적의 솔루션에 가까운 것을 발견 하고 추가적인 혼란으로 “혼란스러운”라인을 버리는 여러 휴리스틱을 적용 하지 않게 합니다 .
1970 년대 diff
의 오래된 유닉스 diff
알고리즘 을 사용하는 OpenBSD에서 , 사용 된 알고리즘은 Harold Stone으로 인식되며 , --minimal
플래그 는 제곱근이 아닌 부호없는 정수의 최대 값에 의해 (실제로 un-) 제한되는 검색을 트리거합니다. 비교되는 라인 범위의 크기 (또는 더 큰 경우 256).
추가 자료
- 유진 W. 마이어스 (1986 년 11 월). ” O (ND) 차이 알고리즘 및 그 변형 “. Algorithmica . 1 권. 문제 1-4. 251–266 쪽. DOI 10.1007 / BF01840446 .
- JW 헌트와 MD McIlroy (1976 년 6 월). ” 차등 파일 비교 알고리즘 “. 보고서 41. 컴퓨팅 과학 . 벨 연구소.
- Richard Hartman (1988-01-13). 유닉스 diff (1) 알고리즘 . 23225@cca.CCA.COM. comp.unix.questions.
- 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 알고리즘, 히스토리 및 구현에 대한 종합적인 검토