二つのファイルを比較しているとき,diffは,hunkと呼ばれる 異なっている行のまとまりが疎らに存在している両方のファイルから,共通な行 の並びを探します.二つの同一ファイルの比較では差異のある行は無いので,一 つの共通な行の並びが見つかり,hunkはありません.二つの全く異なるファイル の比較では,共通の行は無く,両方のファイルのすべての行を含んでいる一つの 大きなhunkが生成されます.一般的に,二つの与えられたファイル間で,行のマッ チを調べる方法はたくさんあります.diffは,大きな共通行の並びを 探しながら差異のある行を小さなhunkにして,全体のhunkの大きさを最小にする よう試みます.
例えば,ファイルFは三行‘a’,‘b’,‘c’を含んでいて, ファイルGは同じ行を逆の順序‘c’,‘b’,‘a’で含んでい ると仮定します.diffが行‘c’を共通として見つけた場合,コマ ンド‘diff F G’は以下の出力を生成します.
1,2d0 < a < b 3a2,3 > b > a
しかし,その代わりに共通行‘b’に注目する場合,以下の出力を生成します.
1c1 < a --- > c 3c3 < c --- > a
‘a’が共通行として見つかる可能性もあります.diffは常に,ファ イル間の最適なマッチしている部分を見つけるわけではありません.それで実行 がより早くなります.しかし,出力は通常可能な限り短くなるようにします. --minimalオプションで,このトレードオフを調整することが可能です (see diff Performance).