Bsdiff and bspatch are tools for building and applying patches to binary
files. By using suffix sorting (specifically, Larsson and Sadakane's
qsufsort) and taking advantage of how executable files change, bsdiff
routinely produces binary patches 50-80% smaller than those produced by
Xdelta, and 15% smaller than those produced by .RTPatch (a $2750/seat
commercial patch tool).

If n is the size of the old file and m is the size of the new file, bsdiff
runs in O((n+m) log n) time; on a 200MHz Pentium Pro, building a binary
patch for a 4MB file takes about 90 seconds. bspatch runs in O(n+m) time;
on the same machine, applying that patch takes about two seconds.

Homepage:
https://www.daemonology.net/bsdiff/
