Tech. Note 3: Compare/Merge LARGE files/folders
When comparing very large files or folders/file trees, Guiffy may seem to hang. The
user interface will still be responsive - but, the compare view doesn't finish. In such
cases Guiffy probably needs to be allowed to allocate more memory (heap space). Guiffy's
default maximum heap space is 256MB. To monitor Guiffy's memory usage enable the Memory
Meter in the View -> Toolbars... dialog. If Guiffy is running out of memory, follow the
notes below to increase the maximum heap size.
Large Folders/File Trees
For large folder/file tree compares with thousands of files/folders, follow the
instructions below for increasing the maximum heap size.
Large Files
Guiffy's I/O runtime library supports 64-bit byte addresses - files > 2GB.
Guiffy includes separate algorithms for very large files to minimize memory requirements
and boost performance.
Guiffy's variables for line numbers are 64-bits - line numbers and the metrics such as number
of lines matching > 2GB.
Guiffy's default Show Options are setup to implement "Folded Compare/Merge Views"
for Larger files (Over 400KB). "Folded Compare/Merge Views" display only the differences within
a few (default of 8) lines of context. This dramatically reduces the memory and
time required to display large file compares or merges.
Guiffy file compare has been tested on 25GB files with over 2GB lines. In this test only 1 line
was changed.
But, if you need to see all of the file in the compare view -or- there are very
LARGE differences in the files --- you will need
to give Guiffy more memory to work with.
Edit the guiffy.lax file to increase the maximum heap size.
Edit guiffy.lax, change the heap.size.max line (usually about line #68).
It will look like this:
lax.nl.java.option.java.heap.size.max=268435456
Change the maximum value to between 2/3 - 3/4 of your system's RAM (if you set it to
more than the available RAM, thrashing may occur).
On MacOS X the maximum heap size is specified in the guiffy application file's Info Plist.
To change the maximum:
1) Ctrl Click on the guiffy application file
2) Show Package Contents
3) Ctrl click on Info Plist, Open With Property List Editor
4) Edit Root, Java, VMOptions, -Xmx256M
Each of Guiffy's compare/merge views (1st, 2nd, and merge result) are limited to 2 G characters.
If the compare/merge of your large file takes a long time and you know there
are big differences between the files, you may consider tuning the Maximum
Block Size to improve performance.
After the LAX.COMMAND.LINE.ARGS line:
lax.command.line.args=$CMD_LINE_ARGUMENTS$
add the line:
lax.nl.java.option.additional=-Dguiffy.block.max=BBBB
Where BBBB= The Maximum Change Block Size in number of lines. A smaller
Maximum Block Size will improve the speed of the compare through large differences
which can even exceed the maximum size. But, smaller Block Sizes may result
in a verbose expression of the differences. The default is 2000.
Documentation by
Guiffy Software, Inc. 2014