|BinCoMerge (in GNU
General Public License Version 3) is a tool to compare and
merge binary files
in a hexadecimal point of view.
Unlike text comparison engines, BinCoMerge does not use classic LCS (Longest Common Subsequence) algorithm.
With text comparison, the algorithm complexity is product of count of lines of each files.
The issue with a comparison byte-per-byte is that the complexity of this algorithm is the product of count of bytes (and not a line) of each files.
BinCoMerge does not use a miracle solution (sorry ;-) ) to improve the complexity. The approach of this tool must be different from solving the LCS problem. Its aims to quickly show some results even if comparison is not yet finished.
BinCoMerge is seeking for common blocks from the biggers to the lowers. It works by levels of minimum block sizes which are powers of 2. For example, with a file sizing between 16 KiB and 32 KiB, Bincomerge will firstly seek for all common blocks bigger than 16 KiB. Then, it will seek for all common bigger than 8 KiB, then 4KiB, 2KiB, 1024 Bytes...
Because it works by levels, BinCoMerge can show all common blocks in levels bigger than the currently working one.
This program was written in C++ using wxWidgets cross-platform toolkit, and designed according a Model-View-Controller pattern.
You can find screen shots and download in sourceforge web site.
Do not hesitate adding bugs and improvements in the BinCoMerge's SourceForge Tracker, to contribute in this project improvement.
You can also post a message in the BinCoMerge's SourceForge Forum if you want to contribute to this project, or if you are simply interested by this project.
SourceForge project page