High performance binary diff 'C' library and utilities
License: Free To Try $29.95
Operating System: Windows
What is FASTDIFF?
FASTDIFF is a binary diffing engine, intended for use both as a stand-alone
utility, and as a library to be integrated into other products such as:
Communication devices or software packages that wish to send "differential
data" over a slow communication link
Storage devices or software packages that wish store or transmit diffs
between versions of data or files
Version control systems
Applications with internal versioning of documents, such as CAD or
Document Management systems
What is Binary Diffing?
Binary Diffing is an operation that takes two files (or arrays of data), and
extracts the difference (also known as a diff or a delta)
DIFF = DIFF (SOURCE, TARGET) = TARGET - SOURCE
Where TARGET and SOURCE are files that we believe to be related (i.e. some
portion of their data is identical), and DIFF is the resulting difference
between the file.
The DIFF may then be stored, or transmitted over a communication line, and
eventually used to recreate the TARGET file, using the reverse operation, known
TARGET = PATCH (SOURCE, DIFF) = SOURCE + DIFF
Because the DIFF is typically 20x to 100x smaller than the TARGET file,
storing or transmitting the DIFF only, rather than the whole TARGET file, is
much more efficient.
FASTDIFF is a binary diff - meaning that it works on arbitrary data
types. This is in contrast with other diff algorithms, such as Unix's diff
command, that work on text files only.
What makes FASTDIFF unique?
FASTDIFF's uniqueness is its high performance and low memory consumption.
FASTDIFF is therefore capable of operating in a real-time environment, such as
in a communication device. FASTDIFF requires a fixed amount of working memory,
regardless of file size (roughly 1.25MB). See benchmark
to a get a sense of FASTDIFF's performance.
Does FASTDIFF work on any file type?
Generally - yes. FASTDIFF has no problem working on files such as files with
embedded graphics, word processing files, CAD files, database files, email
However, there are specific types of files on which FASTDIFF will work
poorly. The reason for this is that FASTDIFF extracts similarities between the
files - on a byte level. Here are two examples in which even though the files
contain similar information, the representation of that information as a string
of bytes is very different, and therefore the FASTDIFF algorithm will perform
(1) Image files with global modifications. If, for example, you change the
contrast of an image file using an image editor, the result is that almost
every byte of the file is changed.
(2) Compressed files - consider two zip archives of two versions of a file -
even though the underlying files in the compressed archives may be very similar,
the compression algorithm may result in compressed files that differ in almost
Does FASTDIFF detect shifts in a file? For example, when a new
paragraph is inserted into a word processing document - the data following the
new paragraph shifts in position in the file. Does FASTDIFF still detect the
similarities of this portion of data, even though it has shifted?
What interface do you provide to FASTDIFF?
FASTDIFF has two types of interfaces:
Command line interface:
fastdiff <source file> <target file> <diff file>
fastpatch <source file> <diff file> <target file>
'C' library interface: Take a look at the API.
Do you provide the source code of the FASTDIFF library?
Both source code and binary-only licensing
options are available.
What platforms are currently supported?
How portable is the FASTDIFF code?
The binary version of the library runs on both Windows and Linux
platforms, on Intel CPUs or compatible.
The FASTDIFF code itself was designed with portability in mind:
The code is pure ANSI 'C' - compiles cleanly with GCC and MS VC
Should run with almost no modifications on other processors,
including big endian processors and 64 bit processors.
The resulting DIFF file is identical regardless of processor type,
endianity or bus width.
Can you help us adapt the FASTDIFF library to our specific
In some cases we are able to provide consulting services to adapt
the FASTDIFF library to your specific needs, including optimization for certain
file types, and porting to other platforms.