ComZip v20180421



---- Shareware Download

  You may download the binary executable codes of ComZip v20180421 in the following URLs:
    1. x86/64 platform: cz_v20180421_x64.tar     (Tested on AMD Ryzen 2700X, Ubuntu Linux 16.04 x64)
    2. ARM platform: cz_v20180421_arm.tar     (Tested on Raspberry Pi 3B+, Raspbian Linux 7)


---- Introduction

    ComZip is a shareware of data compression/encryption. Its current version supports large data window up to 512 GB and large BWT block up to 2 GB. The performance depends on the actual RAM size. ComZip may have better compression ratio than WinRAR and 7-zip, and it may be faster than 7-zip.


---- Compression Command Line

  We take the version for x86/84 platform for example. If the platform is ARM, change the command "comzip1" into "comzip32".

  There are 2 steps to compress:
    1. Generate the index file (XML format) for the list of the original file(s).
    2. Compress the file(s) according to the index file.

  Usage:
    comxml <index XML file> [-f <config file>] <original file path>
    comzip1 <compressed file> <index XML file> <original file path>

  Example:
    comxml test.xml ./test.txt
    comzip1 test.cz test.xml .


---- Decompression Command Line

  We take the version for x86/84 platform for example. If the platform is ARM, change the command "comunzip" into "comunzip32".

  Usage:
    comunzip <compressed file> <index XML file> [<decompressed file path>]

  Example:
    comunzip test.cz test.xml /tmp


---- Configuration of Data Window, Array Block and Matching Times

  To change the data window and array block size, and the matching times of LZ77, there are 2 ways:
    1. Before the command "comxml", modify the file "cz.ini".
    2. Before the command "comzip1", modify the index XML file.

  You can modify 4 parameters in the file "cz.ini" or the index XML file:
    1. "cache": Configure the data window size.
    2. "column": Configure the amount of array compression columns.
    3. "cluster": Configure the array block size.
    4. "sight": Configure the matching times of LZ77 compression.

    And you can use odd values for "cache", for example, 371 MB, 1235 MB, etc.
    But if the value exceeds the capacity of RAM, the system will use the virtual memory. This will slow down the speed rapidly. Thus the data window is limited by the actual RAM size.
    You may estimate the memory usage of running ComZip to avoid the overflow of RAM. It includes 4 parts:

    1. Basic memory for Linux and ComZip.
    On the x86/64 platform, it's about 2-3 GB, while on the ARM platform, it's about 0.5 GB. It depends on the system configurations.

    2. BWT block buffer.
    If the parameter "bwt" is 0, this memory usage is 0. While if "bwt" is 1 and "block' is N, this block buffer is 4N.
    For example, bwt=1 and block=1024, this block buffer is 4 GB.

    3. Data window links memory.
    If the parameter "cache" C, this data window links memory is 5C.
    For example, cache=2000, this data window links memory is 10000 MB.

    4. Data window buffer.
    This memory usage depends on a hidden parameter W. W is determined by the parameter "cache". The memory usage is W.
    The calculation from cache to W: W isn't linear increasing. It jumps on 2k, such as 1, 2, 4, 8, ... , and W >= cache+14 , because ComZip uses 14 MB for the pipeline.
    For example, cache=2034, W=2034, this data window buffer is 2034 MB. If cache=2035, W=4096, this data window buffer is 4 GB.

    Totally for an example, if ComZip runs on the x86/64 platform, bwt=0, cache=4000, the total memory usage is about 2+0+20+4 = 26 GB.



  Developer: Dragon Dream Studio (dragon_2k@21cn.com)