You are here

Winmerge or Meld or ? What do you use for large scale comparison of files?

Submitted by Peter on Thu, 2013-01-17 15:44

Winmerge is the king of file comparisons but is Windows only. Meld is the closest competitor on Linux but is a pain, by comparison, for anything serious. How do they compare? What do you use? How does your choice compare to Meld or Winmerge?

Speed of file comparisons

Meld is slow for anything other than comparing a few code files. When you want to compare one code file, you can usually do that in your code editor without resorting to anything else. To compare a few code files in a directory, you can do that in Filezilla when you are transferring files between systems. For anything else, you need a proper directory/file comparison application to find changed files within a directory and all subdirectories.

Most Linux comparison programs are just front ends for diff and are not useful for anything other than simple text files. Meld is a step up for serious work. Winmerge is faster and gives you more options for controlling comparisons. I compare Meld and Winmerge using the default settings plus the option to display whitespace, an option available in both programs.

For a file comparison that would actually make the programs work hard, I used typical SQL exports from Web sites and compared them to find minor differences, the type you would find when performing quality assurance tests. The test SQL export is from a small site with medium activity. The file was only 153 megabytes because the export contained only content and related tables, not the whole database.

Winmerge, on a computer more than three years old, using a slow old magnetic disk from an earlier computer, completed the comparison in under 28 seconds and I could change the position of the display to any point in the file in less than two seconds.

Meld, on a computer less than one year old, using a fast SSD, required more than 7 minutes to perform the comparison and I could not reliably change the position of the display to other points in the file, the best I could do was page down and each page required almost two seconds. At that speed it would take 20 minutes to reach the first different.

Speed of directory comparisons

How do Winmerge and Meld perform when comparing full size directories? I have not timed this because Meld appears to not perform the same comparison and does not have the range of options to make Meld perform the type of comparison I want.

A typical small to medium web site uses from 3 GB to 50 GB of disk space for code, images, video files, backups, CSS, and everything else. I usually direct many of the files outside of the Web site but Drupal defaults to including many of the files in the Web site to allow for the limitations of common Web site hosting accounts. I used a default configuration.

Some time ago I tried a 20 GB directory in Meld and Meld failed to compare some important files. Winmerge highlighted the differences without using any special settings. Meld appeared to be reasonably fast but that was because it skipped many files. Copying the files from the Linux box to the Windows box, across a gigabyte Ethernet network, then running Winmerge used about the same time as the whole comparison process in Meld.

Some of my projects are developed on USB3 connected disks, which means there is no time wasted copying the files cross the network. Winmerge wins easily.

Recently I used a newer version of Meld and the comparison appeared to be faster per file plus Meld appears to have compared all the files compared. Meld is improving.

Reliability

Meld occasionally crashes comparing directories successfully compared by Winmerge. The latest version of Meld appears to crash less but it does occasionally bog down to the point where it is unusable.

Meld refuses to display some directories. There is an issue open for the problem. The issue is fixed in Meld 1.5.2 but still exists in Meld 1.5.3.

Availability

Winmerge works only on Windows. You might be able to use Winmerge elsewhere within an emulator but emulators are unreliable and some require a copy of Windows which defeats the purpose of moving to another operating system.

Meld works on Linux. There is a project to produce a Windows version but the current version is just a Cygwin style mess.

Some of the alternatives to Meld have no Windows project, not even a Cygwin style mess.

Kdiff3

Kdiff3 is a frequently mentioned alternative to Meld and Winmerge. In my brief look at Kdiff3 some months ago, I could not find anything in Kdiff3 that is more useful than Meld.

Kdiff3 uses the Qt user interface and can run on Windows plus Linux and Apple Unix. There are some things in Kdiff3 that might be more useful than Meld but some of the features work only on one operating system or under the Linux KDE user interface, something I do not use.

I require applications to work the same under Windows and Linux without KDE. Ubuntu offers the KDE version of Kdiff3, not the pure Qt version.

Winmerge 2011

Winmerge 2011 is a new variation of Winmerge designed to remove some dependencies on Microsoft development software. The result might be faster, more open, development because the developers do not have to buy development software. There is no indication that this version will reach Linux faster than the original version.

Conclusion

A programmer can use almost anything to compare code. A Web developer needs a full range comparison tool. Winmerge is the best. Meld is a good substitute on Linux for small projects. There is not currently a better alternative to Meld on Linux. There is not currently an alternative running successfully on Linux and Windows with a standard install process. Feel free to add comments suggesting alternatives for either Linux or Linux+Windows.