What effect does the -d/--minimal option have with diff?
Clash Royale CLAN TAG#URR8PPP
up vote
19
down vote
favorite
The diff
implementation on OpenBSD has a non-standard -d
option with the following documentation:
-d
Try very hard to produce a diff as small as possible. This may
consume a lot of processing power and memory when processing
large files with many changes.
The GNU diff
implementation has the same option with the shorter documentation
-d
,--minimal
try hard to find a smaller set of changes
From time to time I've used this option just to see if it generates output that is in any shape or form different from the same diff
command without the option, but I've never seen any difference (no pun intended).
Could someone provide or point to an example where this option actually produces a different result from the same command without -d
? Alternatively, if someone could explain the circumstances required for this option to kick in. I'm also uncertain whether "minimal" means "fewer lines of output" or "fewer hunks".
An uneducated guess is that it has to do with very large hunks.
diff
add a comment |Â
up vote
19
down vote
favorite
The diff
implementation on OpenBSD has a non-standard -d
option with the following documentation:
-d
Try very hard to produce a diff as small as possible. This may
consume a lot of processing power and memory when processing
large files with many changes.
The GNU diff
implementation has the same option with the shorter documentation
-d
,--minimal
try hard to find a smaller set of changes
From time to time I've used this option just to see if it generates output that is in any shape or form different from the same diff
command without the option, but I've never seen any difference (no pun intended).
Could someone provide or point to an example where this option actually produces a different result from the same command without -d
? Alternatively, if someone could explain the circumstances required for this option to kick in. I'm also uncertain whether "minimal" means "fewer lines of output" or "fewer hunks".
An uneducated guess is that it has to do with very large hunks.
diff
unix.stackexchange.com/questions/472528 piqued your curiosity did it? (-:
â JdeBP
18 hours ago
@JdeBP Yes indeed. It reminded me about this flag and the fact that I simply don't know what it does since I've never seen it do anything.
â Kusalananda
18 hours ago
1
info diff performance
explains it IIRC
â Stéphane Chazelas
18 hours ago
add a comment |Â
up vote
19
down vote
favorite
up vote
19
down vote
favorite
The diff
implementation on OpenBSD has a non-standard -d
option with the following documentation:
-d
Try very hard to produce a diff as small as possible. This may
consume a lot of processing power and memory when processing
large files with many changes.
The GNU diff
implementation has the same option with the shorter documentation
-d
,--minimal
try hard to find a smaller set of changes
From time to time I've used this option just to see if it generates output that is in any shape or form different from the same diff
command without the option, but I've never seen any difference (no pun intended).
Could someone provide or point to an example where this option actually produces a different result from the same command without -d
? Alternatively, if someone could explain the circumstances required for this option to kick in. I'm also uncertain whether "minimal" means "fewer lines of output" or "fewer hunks".
An uneducated guess is that it has to do with very large hunks.
diff
The diff
implementation on OpenBSD has a non-standard -d
option with the following documentation:
-d
Try very hard to produce a diff as small as possible. This may
consume a lot of processing power and memory when processing
large files with many changes.
The GNU diff
implementation has the same option with the shorter documentation
-d
,--minimal
try hard to find a smaller set of changes
From time to time I've used this option just to see if it generates output that is in any shape or form different from the same diff
command without the option, but I've never seen any difference (no pun intended).
Could someone provide or point to an example where this option actually produces a different result from the same command without -d
? Alternatively, if someone could explain the circumstances required for this option to kick in. I'm also uncertain whether "minimal" means "fewer lines of output" or "fewer hunks".
An uneducated guess is that it has to do with very large hunks.
diff
diff
edited 4 mins ago
muru
33.8k577146
33.8k577146
asked 19 hours ago
Kusalananda
108k14209332
108k14209332
unix.stackexchange.com/questions/472528 piqued your curiosity did it? (-:
â JdeBP
18 hours ago
@JdeBP Yes indeed. It reminded me about this flag and the fact that I simply don't know what it does since I've never seen it do anything.
â Kusalananda
18 hours ago
1
info diff performance
explains it IIRC
â Stéphane Chazelas
18 hours ago
add a comment |Â
unix.stackexchange.com/questions/472528 piqued your curiosity did it? (-:
â JdeBP
18 hours ago
@JdeBP Yes indeed. It reminded me about this flag and the fact that I simply don't know what it does since I've never seen it do anything.
â Kusalananda
18 hours ago
1
info diff performance
explains it IIRC
â Stéphane Chazelas
18 hours ago
unix.stackexchange.com/questions/472528 piqued your curiosity did it? (-:
â JdeBP
18 hours ago
unix.stackexchange.com/questions/472528 piqued your curiosity did it? (-:
â JdeBP
18 hours ago
@JdeBP Yes indeed. It reminded me about this flag and the fact that I simply don't know what it does since I've never seen it do anything.
â Kusalananda
18 hours ago
@JdeBP Yes indeed. It reminded me about this flag and the fact that I simply don't know what it does since I've never seen it do anything.
â Kusalananda
18 hours ago
1
1
info diff performance
explains it IIRCâ Stéphane Chazelas
18 hours ago
info diff performance
explains it IIRCâ Stéphane Chazelas
18 hours ago
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
12
down vote
accepted
In GNU diff
, also used on FreeBSD, the --minimal
flag triggers an algorithm variation by Paul Eggert that causes it "to limit the cost to O(N**1.5 log N)
at the price of producing suboptimal output for large inputs with differences". More specifically, it causes it to not apply several heuristics that deal in finding merely close to optimal solutions and in throwing out "confusing" lines as extra differences.
In OpenBSD diff
, which uses the older Unix diff
algorithm from the 1970s, the algorithm employed is credited to Harold Stone, and the --minimal
flag triggers a search that is (effectively un-) bounded by the maximum value of an unsigned integer instead of by the square root of the size of the range of lines being compared (or 256 if it is greater).
Further reading
- Eugene W. Myers (November 1986). "An O(ND) difference algorithm and its variations". Algorithmica. Volume 1. Issue 1â4. pp. 251â266. DOI 10.1007/BF01840446.
- J. W. Hunt and M. D. McIlroy (June 1976). "An Algorithm for Differential File Comparison". Report 41. Computing Science. Bell Laboratories.
- Richard Hartman (1988-01-13). Unix diff(1) algorithm.
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
- Comprehensive review of diff algorithms, their history and implementations
When I created a better diff from the UNIX sources, I checked that OpenBSD enhancement and could not find any better results. Note that the original stone() function uses: ` } while ((y = b[++j]) > 0);` and BTW: for normal file sizes, my enhanced UNIX diff is faster than GNU diff.
â schily
17 hours ago
Thanks for the references!
â Kusalananda
13 hours ago
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
12
down vote
accepted
In GNU diff
, also used on FreeBSD, the --minimal
flag triggers an algorithm variation by Paul Eggert that causes it "to limit the cost to O(N**1.5 log N)
at the price of producing suboptimal output for large inputs with differences". More specifically, it causes it to not apply several heuristics that deal in finding merely close to optimal solutions and in throwing out "confusing" lines as extra differences.
In OpenBSD diff
, which uses the older Unix diff
algorithm from the 1970s, the algorithm employed is credited to Harold Stone, and the --minimal
flag triggers a search that is (effectively un-) bounded by the maximum value of an unsigned integer instead of by the square root of the size of the range of lines being compared (or 256 if it is greater).
Further reading
- Eugene W. Myers (November 1986). "An O(ND) difference algorithm and its variations". Algorithmica. Volume 1. Issue 1â4. pp. 251â266. DOI 10.1007/BF01840446.
- J. W. Hunt and M. D. McIlroy (June 1976). "An Algorithm for Differential File Comparison". Report 41. Computing Science. Bell Laboratories.
- Richard Hartman (1988-01-13). Unix diff(1) algorithm.
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
- Comprehensive review of diff algorithms, their history and implementations
When I created a better diff from the UNIX sources, I checked that OpenBSD enhancement and could not find any better results. Note that the original stone() function uses: ` } while ((y = b[++j]) > 0);` and BTW: for normal file sizes, my enhanced UNIX diff is faster than GNU diff.
â schily
17 hours ago
Thanks for the references!
â Kusalananda
13 hours ago
add a comment |Â
up vote
12
down vote
accepted
In GNU diff
, also used on FreeBSD, the --minimal
flag triggers an algorithm variation by Paul Eggert that causes it "to limit the cost to O(N**1.5 log N)
at the price of producing suboptimal output for large inputs with differences". More specifically, it causes it to not apply several heuristics that deal in finding merely close to optimal solutions and in throwing out "confusing" lines as extra differences.
In OpenBSD diff
, which uses the older Unix diff
algorithm from the 1970s, the algorithm employed is credited to Harold Stone, and the --minimal
flag triggers a search that is (effectively un-) bounded by the maximum value of an unsigned integer instead of by the square root of the size of the range of lines being compared (or 256 if it is greater).
Further reading
- Eugene W. Myers (November 1986). "An O(ND) difference algorithm and its variations". Algorithmica. Volume 1. Issue 1â4. pp. 251â266. DOI 10.1007/BF01840446.
- J. W. Hunt and M. D. McIlroy (June 1976). "An Algorithm for Differential File Comparison". Report 41. Computing Science. Bell Laboratories.
- Richard Hartman (1988-01-13). Unix diff(1) algorithm.
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
- Comprehensive review of diff algorithms, their history and implementations
When I created a better diff from the UNIX sources, I checked that OpenBSD enhancement and could not find any better results. Note that the original stone() function uses: ` } while ((y = b[++j]) > 0);` and BTW: for normal file sizes, my enhanced UNIX diff is faster than GNU diff.
â schily
17 hours ago
Thanks for the references!
â Kusalananda
13 hours ago
add a comment |Â
up vote
12
down vote
accepted
up vote
12
down vote
accepted
In GNU diff
, also used on FreeBSD, the --minimal
flag triggers an algorithm variation by Paul Eggert that causes it "to limit the cost to O(N**1.5 log N)
at the price of producing suboptimal output for large inputs with differences". More specifically, it causes it to not apply several heuristics that deal in finding merely close to optimal solutions and in throwing out "confusing" lines as extra differences.
In OpenBSD diff
, which uses the older Unix diff
algorithm from the 1970s, the algorithm employed is credited to Harold Stone, and the --minimal
flag triggers a search that is (effectively un-) bounded by the maximum value of an unsigned integer instead of by the square root of the size of the range of lines being compared (or 256 if it is greater).
Further reading
- Eugene W. Myers (November 1986). "An O(ND) difference algorithm and its variations". Algorithmica. Volume 1. Issue 1â4. pp. 251â266. DOI 10.1007/BF01840446.
- J. W. Hunt and M. D. McIlroy (June 1976). "An Algorithm for Differential File Comparison". Report 41. Computing Science. Bell Laboratories.
- Richard Hartman (1988-01-13). Unix diff(1) algorithm.
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
- Comprehensive review of diff algorithms, their history and implementations
In GNU diff
, also used on FreeBSD, the --minimal
flag triggers an algorithm variation by Paul Eggert that causes it "to limit the cost to O(N**1.5 log N)
at the price of producing suboptimal output for large inputs with differences". More specifically, it causes it to not apply several heuristics that deal in finding merely close to optimal solutions and in throwing out "confusing" lines as extra differences.
In OpenBSD diff
, which uses the older Unix diff
algorithm from the 1970s, the algorithm employed is credited to Harold Stone, and the --minimal
flag triggers a search that is (effectively un-) bounded by the maximum value of an unsigned integer instead of by the square root of the size of the range of lines being compared (or 256 if it is greater).
Further reading
- Eugene W. Myers (November 1986). "An O(ND) difference algorithm and its variations". Algorithmica. Volume 1. Issue 1â4. pp. 251â266. DOI 10.1007/BF01840446.
- J. W. Hunt and M. D. McIlroy (June 1976). "An Algorithm for Differential File Comparison". Report 41. Computing Science. Bell Laboratories.
- Richard Hartman (1988-01-13). Unix diff(1) algorithm.
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
- Comprehensive review of diff algorithms, their history and implementations
edited 9 hours ago
bishop
1,7932719
1,7932719
answered 17 hours ago
JdeBP
29.9k462137
29.9k462137
When I created a better diff from the UNIX sources, I checked that OpenBSD enhancement and could not find any better results. Note that the original stone() function uses: ` } while ((y = b[++j]) > 0);` and BTW: for normal file sizes, my enhanced UNIX diff is faster than GNU diff.
â schily
17 hours ago
Thanks for the references!
â Kusalananda
13 hours ago
add a comment |Â
When I created a better diff from the UNIX sources, I checked that OpenBSD enhancement and could not find any better results. Note that the original stone() function uses: ` } while ((y = b[++j]) > 0);` and BTW: for normal file sizes, my enhanced UNIX diff is faster than GNU diff.
â schily
17 hours ago
Thanks for the references!
â Kusalananda
13 hours ago
When I created a better diff from the UNIX sources, I checked that OpenBSD enhancement and could not find any better results. Note that the original stone() function uses: ` } while ((y = b[++j]) > 0);` and BTW: for normal file sizes, my enhanced UNIX diff is faster than GNU diff.
â schily
17 hours ago
When I created a better diff from the UNIX sources, I checked that OpenBSD enhancement and could not find any better results. Note that the original stone() function uses: ` } while ((y = b[++j]) > 0);` and BTW: for normal file sizes, my enhanced UNIX diff is faster than GNU diff.
â schily
17 hours ago
Thanks for the references!
â Kusalananda
13 hours ago
Thanks for the references!
â Kusalananda
13 hours ago
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f472540%2fwhat-effect-does-the-d-minimal-option-have-with-diff%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
unix.stackexchange.com/questions/472528 piqued your curiosity did it? (-:
â JdeBP
18 hours ago
@JdeBP Yes indeed. It reminded me about this flag and the fact that I simply don't know what it does since I've never seen it do anything.
â Kusalananda
18 hours ago
1
info diff performance
explains it IIRCâ Stéphane Chazelas
18 hours ago