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 25% of available memory.
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 (Options -> Show) 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 10) 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.
On Windows, MacOS, and Linux platforms:
Edit the guiffy.properties file located in Guiffy's install folder to increase the maximum heap size.
Guiffy's default install paths are:
- Windows: /Program Files/Guiffy
- Linux: /HOME/Guiffy
- MacOS: /Applications/Guiffy
Edit guiffy.properties, add the vm_parameter to change the maximum heap size.
vm_parameters=-Xmx512m
Where the 512m above specifies 512MB.
NOTE: Multiple vm_parameters are separated by space: For example:
vm_parameters=-Dguiffy.laf=com.formdev.flatlaf.FlatDarkLaf -Xmx512m
On Unix and Other platforms:
Edit the guiffy.lax file located in Guiffy's install folder to increase the maximum heap size.
Guiffy's default install paths are:
- Unix: /usr/local/bin/Guiffy
NOTE: To replace the guiffy.lax file you will need to
open the file as Administrator or SuperUser.
Be sure once you're done and save the guiffy.lax file, the
file is actually updated in the Guiffy install folder.
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
to
lax.nl.java.option.additional=-Xmx512m
Where the 512m above specifies 512MB.
To specify 1GB for example:
lax.nl.java.option.additional=-Xmx1024m
Note: Do not change the maximum value to more than 3/4 of your system's RAM (if you set it to
more than the available RAM, thrashing may occur).
Note: If the guiffy.lax file installed does not have a heap.size.max line, add the line below
the lax.nl.java.launcher.main.method=main line.
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. 2023