“-d”옵션은 diff에 어떤 영향을 줍니까?


24

diffOpenBSD에서 의 구현 -d에는 다음과 같은 비표준 옵션이 있습니다.

-d

diff를 가능한 작게 만들기 위해 매우 열심히 노력하십시오. 변경 사항이 많은 대용량 파일을 처리 할 때 처리 능력과 메모리가 많이 소모 될 수 있습니다.

GNU diff구현은 더 짧은 문서와 동일한 옵션을 갖습니다.

-d, --minimal

더 작은 변화를 찾으려고 노력하십시오

때때로 나는 그것이 같은에서 어떤 모양이나 형태 다른 인 출력을 생성하는 경우 만 보려면이 옵션을 사용했습니다 diff옵션없이 명령을,하지만 난 적이 결코 (웃기려는 의도 없음) 차이를 보이지 않는다.

누군가이 옵션이 실제로 동일한 명령에서 다른 결과를 생성하는 예제를 제공하거나 가리킬 수 -d있습니까? 다른 사람이이 옵션을 시작하는 데 필요한 상황을 설명 할 수 있다면 "최소"가 "작은 출력 줄"또는 "더 적은 덩어리"를 의미하는지 확실하지 않습니다.

교육받지 못한 추측은 큰 덩어리와 관련이 있다는 것입니다.


1
unix.stackexchange.com/questions/472528 호기심을 자극 했습니까? (-:
JdeBP

@JdeBP 그렇습니다. 이 플래그에 대해 생각 나게했는데, 내가 한 일을 본 적이 없어서 그 플래그가 무엇을하는지 모른다는 사실을 상기시켜주었습니다.
Kusalananda

1
info diff performanceIIRC
Stéphane Chazelas

1
분명히 관련이 있습니다. 슬프게도 마이어의 예는 없습니다-> 최소한의 결과.
Isaac Isaac

1
gdiff -dOpenBSD의 추가 기능이 유용한 지 확인하기 위해 다른 출력을 생성하는 예제를 얻고 싶습니다 . 내 테스트에서 차이점을 얻을 수는 없었지만 OpenBSD 코드는 정상적인 파일 크기를 사용하는 한 Douglas McIlroy의 diff 알고리즘이 gdiff보다 빠르기 때문에 상당한 영향을 미치는 성능을 느리게합니다.
schily

답변:


15

diffFreeBSD에서도 사용되는 GNU 에서 --minimal플래그는 Paul Eggert의 알고리즘 변형을 트리거하여 " O(N**1.5 log N)차이가있는 큰 입력에 대해 차선의 출력을 생성하는 가격으로 비용을 제한합니다 ". 보다 구체적으로, 그것은 단지 최적의 솔루션에 가까운 것을 발견 하고 추가적인 혼란으로 "혼란스러운"라인을 버리는 여러 휴리스틱을 적용 하지 않게 합니다 .

1970 년대 diff의 오래된 유닉스 diff알고리즘 을 사용하는 OpenBSD에서 , 사용 된 알고리즘은 Harold Stone으로 인식되며 , --minimal플래그 는 제곱근이 아닌 부호없는 정수의 최대 값에 의해 (실제로 un-) 제한되는 검색을 트리거합니다. 비교되는 라인 범위의 크기 (또는 더 큰 경우 256).

추가 자료


1
유닉스 소스에서 더 나은 차이점을 만들었을 때 OpenBSD 개선 사항을 확인했지만 더 나은 결과를 찾을 수 없었습니다. 원래 stone () 함수는`} while ((y = b [++ j])> 0);`및 BTW :를 사용합니다. BTW : 일반 파일 크기의 경우, 향상된 UNIX diff가 GNU diff보다 빠릅니다.
schily
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.