Incremental Compression Benchmark

The following test shows what happens when the 32 bit MinGW g++ compiler version 4.4.0 is backed up, followed by version 4.5.0, which has many files (40% of total size) in common, and then both directories are extracted. Times are in real seconds, with CPU seconds shown if the program is limited by disk speed. Programs are classified as free, open source, and whether there is a specification describing the format. Last updated Jan. 13, 2014 by Matt Mahoney (author of zpaq).

Archiver          Create mingw44   Time  Add mingw45   Time Extract (CPU)  Free Open Spec 
-------           --------------  -----  -----------   ---- ------- -----  ---- ---- ----
uncompressed         116,655,760         276,348,369

tar -r      (Win32)  117,841,920    1.7  278,814,720    2.9   17.7    7.7  Yes  Yes  Yes
            (Linux)  117,903,360    0.13 278,927,360    0.20   0.30

exdupe -x0  (Linux)  108,398,608    2.6  255,797,938    2.6    2.5    0.5  Yes  Yes  No
exdupe -x1            60,591,141    2.7  153,669,779    2.7    2.1    1.3
exdupe -x2            54,722,069    4.2  140,538,675    4.8    3.3    1.6
exdupe -x3            50,307,903   14.7  131,248,915   18.8   13.8   13.7

zip         (Win32)   54,704,677   14.8  140,666,060   19.3   20.0   11.1  Yes  Yes  Yes
zip -9                54,479,404   23.4  140,178,119   29.3   19.0   11.4

zip         (Linux)   54,587,804    5.0  140,418,752    6.7    2.6    2.0
zip -9                54,362,531    9.5  139,930,811   12.1    2.4    1.9

rar         (Win32)   49,766,504   30.3  129,667,053   43.9   37.9    9.3  No  UnRAR No 
rar -s                41,892,363   28.8  112,591,881   42.9   32.8    9.3
rar -s -m5            41,796,989   35.6  112,379,699   51.8   31.8    8.6
rar        -ma5       49,622,311   29.6  128,072,934   44.9   38.9   11.0
rar -s     -ma5       39,353,664   33.3   80,580,793   51.8   31.8    8.6
rar -s -m5 -ma5       39,247,216   44.6   80,323,216   58.2   33.1    9.0

7zip        (Win32)   38,517,699   54.5  105,112,527   74.1   40.8   12.1  Yes  Yes  No
7zip -mx              37,372,117   60.1   76,420,114   83.3   31.1   11.8

7zip        (Linux)   38,688,771   32.5  105,709,753   44.1    8.5    8.0
7zip -mx              37,796,121   39.7   77,478,904   54.9    6.5    6.0

arc -m1     (Win32)   47,532,588    3.1   93,410,320    7.0   21.5   10.8  Yes  Yes  No
arc -m2               41,709,395    5.4   85,154,022   14.3   28.1   15.7
arc -m3               40,758,956    8.8   82,910,637   25.0   29.3   16.6
arc -m4               39,959,885   18.0   81,110,925   43.1   30.4   18.9
arc -m5               37,276,959   56.4   73,346,814  118.2   37.8   21.0
arc -m7               37,005,360   57.9   72,251,977  126.5   39.2   23.3
arc -m9               37,004,608   60.7   71,272,360  154.0   38.2   22.6
arc -m9x              37,406,338   69.9   72,041,614  182.2   33.6   17.4

zcm -r         (Win32)46,176,811  277.1  121,883,071  352.8  291.7         Yes  No   No
zcm -r -m6 -t2 -s     38,327,556   62.2   91,216,921   79.2  153.8
zcm -r -m6 -t1 -s     36,182,872   63.0   73,986,771   83.4  154.0
zcm -r -m7 -t1 -s     36,118,689   66.3   73,852,323   85.7  158.5

zpaq -method 1 (Win32)45,305,803    7.3   92,000,762    7.9   23.5   11.8  Yes  Yes  Yes
zpaq -method 2        44,195,429   13.9   89,301,298   13.5   18.4   12.1
zpaq -method 3        41,571,855   30.5   84,131,120   31.6   31.2
zpaq -method 4        41,052,459   76.7   83,271,970   78.4   75.6
zpaq -method 5        37,410,114  150.6   75,589,873  158.2  325.6
zpaq -method 6        36,029,372  536.8   72,695,240  563.7 1080.8

zpaq -method 1 (Linux)45,305,217    3.1   92,000,137    3.6    4.2
zpaq -method 2        44,194,843    5.6   89,300,673    6.0    4.5
zpaq -method 3        41,571,269   18.3   84,130,495   18.9   16.5
zpaq -method 4        41,051,873   43.6   83,271,345   45.4   33.2
zpaq -method 5        37,409,528   88.9   75,589,248   92.4  149.1
zpaq -method 6        36,028,786  299.1   72,694,615  311.6  518.7

The test data (88 MB, compressed with zpaq -method 2) consists of two directories:

There is a mix of text (headers, documentation) and binary (programs and libraries). Archivers were tested in Windows and Linux as follows: Times are real times in seconds. When extraction time is limited by disk write speed, CPU process times are also shown. The archivers tested are:

tar and zip are single threaded. Other programs are multi-threaded and use all available cores.

zpaq Historical Results

Archiver          Create mingw44   Time  Add mingw45   Time Extract (CPU)
-------           --------------  -----  -----------   ---- ------- -----
zpaq v6.26-6.28
zpaq -method 1 (win32)46,156,823    6.6   93,587,997    9.5   21.5   11.8
zpaq -method 2        42,800,065   15.1   86,537,822   22.5   32.0
zpaq -method 3        40,921,225   46.0   83,097,275   47.7   74.3
zpaq -method 4        37,728,233  145.7   76,693,484  152.6  275.1
zpaq -method 5        36,393,788  572.5   73,505,007  570.7 1126.1

zpaq -method 1 (Linux)46,156,912    3.0   93,588,793    4.1    2.8
zpaq -method 2        42,800,154    5.8   86,538,618    9.0    9.3
zpaq -method 3        40,921,314   20.3   83,098,071   21.1   38.4
zpaq -method 4        37,728,322   68.5   76,694,280   71.2  138.8
zpaq -method 5        36,393,877  268.5   73,505,803  281.8  512.7
zpaq -method 6        35,861,071  281.7   72,647,140  326.8  528.5
zpaq -method 7        35,829,691  467.2   72,339,570  493.0  570.7

zpaq v6.29 Jun 6 2013
zpaq -method 1 (Win32)45,568,412    6.9   92,366,428   10.0   26.4   11.6
zpaq -method 2        42,333,871   14.3   85,573,257   21.5   28.4
zpaq -method 3        40,929,415   45.4   83,103,562   46.9   74.2   
zpaq -method 4        37,737,177  139.1   76,713,352  144.9  270.5
zpaq -method 5        36,274,342  580.4   73,373,372  560.2 1195.5

zpaq -method 1 (Linux)45,568,547    3.3   92,367,332    4.9    3.4
zpaq -method 2        42,334,006    6.2   85,574,161   10.2   10.2
zpaq -method 3        40,929,550   19.6   83,104,466   20.6   39.2
zpaq -method 4        37,737,312   68.3   76,714,256   71.5  146.9
zpaq -method 5        36,274,477  265.2   73,374,276  260.6  526.9
zpaq -method 6        35,861,111  283.8   72,526,179  326.2  537.6
zpaq -method 7        35,746,626  467.3   72,079,042  490.7  569.5

zpaq v6.33 Jun 20 2013
zpaq -method 1 (Win32)45,495,244    7.3   92,414,202    7.4   27.1   11.2
zpaq -method 2        44,276,424   11.0   89,727,760   12.8   27.2   11.3
zpaq -method 3        41,694,873   16.0   84,880,421   22.6   26.3
zpaq -method 4        40,443,535   47.0   82,380,065   49.2   71.6
zpaq -method 5        40,341,255   55.8   81,945,053   67.8   65.1

zpaq -method 1 (Linux)45,495,398    3.2   92,415,139    4.0    2.6
zpaq -method 17       44,873,640   10.9   90,939,362   11.7    4.2
zpaq -method 2        44,276,578    4.1   89,728,697    5.5    2.6
zpaq -method 27       43,702,035   19.2   88,420,120   20.3    4.1
zpaq -method 3        41,695,027    7.1   84,881,358   13.8   13.1
zpaq -method 37       41,637,063   23.7   84,217,202   24.8   19.7
zpaq -method 4        40,443,689   19.7   82,381,001   20.8   39.0
zpaq -method 47       42,612,134   41.7   85,791,127   45.1   61.1
zpaq -method 5        40,341,409   24.4   81,945,990   29.4   34.1
zpaq -method 57       41,637,063   63.9   84,217,202   67.4   21.3
zpaq -method 6        37,730,480   54.5   76,484,697   64.3  109.3
zpaq -method 67       37,183,272  153.3   74,972,278  150.0  180.6
zpaq -method 7        36,318,981  248.1   73,537,989  265.2  516.6
zpaq -method 77       35,749,161  503.1   72,081,603  485.5  587.6

zpaq v6.33 Jun 20 2013
zpaq -method 1 (Win32)45,495,244    7.3   92,414,202    7.4   27.1   11.2
zpaq -method 2        44,276,424   11.0   89,727,760   12.8   27.2   11.3
zpaq -method 3        41,694,873   16.0   84,880,421   22.6   26.3
zpaq -method 4        40,443,535   47.0   82,380,065   49.2   71.6
zpaq -method 5        40,341,255   55.8   81,945,053   67.8   65.1

zpaq -method 1 (Linux)45,495,398    3.2   92,415,139    4.0    2.6
zpaq -method 2        44,276,578    4.1   89,728,697    5.5    2.6
zpaq -method 3        41,695,027    7.1   84,881,358   13.8   13.1
zpaq -method 4        40,443,689   19.7   82,381,001   20.8   39.0
zpaq -method 5        40,341,409   24.4   81,945,990   29.4   34.1
zpaq -method 6        37,730,480   54.5   76,484,697   64.3  109.3
zpaq -method 7        36,318,981  248.1   73,537,989  265.2  516.6

zpaq v6.34 Jun 25 2013
zpaq -method 1 (Win32)45,507,827    7.5   92,432,625    7.8   21.5   11.6
zpaq -method 16       45,213,159   10.6   91,299,009   14.3   12.5   11.9
zpaq -method 2        43,926,639   16.4   88,606,748   29.3   12.3   11.4
zpaq -method 3        41,394,749   23.2   83,956,977   32.4   28.0
zpaq -method 4        40,523,675   80.3   82,627,602   83.8   70.7
zpaq -method 5        37,328,909  242.6   75,449,812  244.6  267.2
zpaq -method 6        35,879,367  639.2   72,543,740  598.0 1084.5

zpaq -method 1 (Linux)45,507,929    3.2   92,433,449    3.7    3.3
zpaq -method 16       45,438,125    4.9   91,825,677    8.8    3.4
zpaq -method 2        43,926,741    6.7   88,607,572   16.3    3.1
zpaq -method 3        41,394,851   10.5   83,957,801   18.3   14.6
zpaq -method 4        40,523,777   33.3   82,628,426   45.7   37.6
zpaq -method 5        37,329,011  104.6   75,450,636  141.2  143.3
zpaq -method 6        35,879,469  294.8   72,544,564  324.5  520.7

zpaq v6.35 Jun 28 2013
zpaq -method 1 (Win32)45,479,746    8.0   92,360,106   8.2    19.7   11.6
zpaq -method 2        43,852,334   17.3   88,446,849  29.3    13.3   11.8
zpaq -method 3        41,392,829   24.5   83,949,165  31.9    28.8
zpaq -method 4        40,525,432   79.6   82,627,406  81.2    69.5
zpaq -method 5        37,330,666  243.3   75,452,321 247.5   275.5

zpaq -method 1 (Linux)45,479,890    3.2   92,361,050    3.9    2.6
zpaq -method 2        43,852,478    7.1   88,447,793   17.4    3.0
zpaq -method 3        41,392,973   10.9   83,950,109   18.4   14.6
zpaq -method 4        40,525,576   34.5   82,628,350   46.9   37.5
zpaq -method 5        37,330,810  106.9   75,453,265  143.7  141.3
zpaq -method 6        35,880,227  311.9   72,546,152  325.4  524.6

zpaq v6.36 Jul 5 2013
zpaq -method 1 (Win32)45,322,037    7.8   92,032,886    8.2   30.0   11.9
zpaq -method 2        44,400,042   14.2   89,525,406   18.6   17.7   11.5
zpaq -method 3        41,324,346   25.1   83,824,595   32.3   27.9
zpaq -method 4        40,523,815   79.8   82,586,326   84.0   72.8
zpaq -method 5        37,329,049  241.3   75,450,744  241.4  289.0

zpaq -method 1 (Linux)45,322,183    3.3   92,033,818    3.9    2.4
zpaq -method 2        44,400,188    5.6   89,526,338    7.6    2.6
zpaq -method 3        41,324,492   11.5   83,825,527   18.6   14.2
zpaq -method 4        40,523,961   34.1   82,587,258   46.3   36.7
zpaq -method 5        37,329,195  105.9   75,451,676  144.3  134.6
zpaq -method 6        35,877,968  288.6   72,541,875  326.7  528.1

zpaq v6.38 Jul 18 2013
zpaq -method 1 (Win32)45,321,960    8.2   92,032,731    8.0   20.8   11.7
zpaq -method 2        44,400,007   14.1   89,525,336   18.3   17.6   11.8
zpaq -method 3        41,324,314   25.2   83,824,539   32.1   28.7
zpaq -method 4        40,523,782   79.1   82,586,268   82.6   69.8

zpaq v6.41 Aug 2 2013
zpaq -method 1 (Win32)45,321,960    7.3   92,032,731    8.2   30.3   11.7
zpaq -method 2        44,400,007   13.9   89,525,336   18.1   21.5   11.5
zpaq -method 3        41,324,314   24.7   83,824,539   31.4   27.4
zpaq -method 4        40,523,782   79.7   82,586,268   82.4   70.4

zpaq -method 1 (Linux)45,322,106    3.3   92,033,663    3.9    2.5
zpaq -method 2        44,400,153    5.5   89,526,268    7.5    2.6
zpaq -method 3        41,324,460   11.3   83,825,471   18.7   14.5
zpaq -method 4        40,523,928   34.5   82,587,200   46.4   37.5
zpaq -method 5        37,329,163  105.9   75,451,622  144.5  149.0
zpaq -method 6        35,877,938  303.0   72,541,825  325.3  532.0

zpaq v6.44 Jan 9 2014
zpaq -method 1 (Win32)45,321,960    8.1   92,032,731    8.7   27.9   12.6
zpaq -method 2        44,400,007   13.8   89,525,336   18.6   21.4   12.4
zpaq -method 3        41,324,314   24.6   83,824,539   31.8   28.4
zpaq -method 4        40,523,782   79.9   82,586,268   80.8   72.3

zpaq -method 1 (Linux)45,321,394    3.1   92,032,067    3.6    5.8
zpaq -method 2        44,399,441    5.3   89,524,672    7.4    5.0
zpaq -method 3        41,323,748   11.6   83,823,875   18.8   13.5
zpaq -method 4        40,523,216   33.9   82,585,604   46.4   34.8
zpaq -method 5        37,328,451   75.2   75,450,026   95.3  144.2
zpaq -method 6        35,877,226  308.2   72,540,229  322.9  531.4

zpaq v6.45 Jan 12 2014
zpaq -method 1 (Win32)45,305,803    7.3   92,000,762    7.9   23.5   11.8
zpaq -method 2        44,195,429   13.9   89,301,298   13.5   18.4   12.1
zpaq -method 3        41,571,855   30.5   84,131,120   31.6   31.2
zpaq -method 4        41,052,459   76.7   83,271,970   78.4   75.6
zpaq -method 5        37,410,114  150.6   75,589,873  158.2  325.6
zpaq -method 6        36,029,372  536.8   72,695,240  563.7 1080.8

zpaq -method 1 (Linux)45,305,217    3.1   92,000,137    3.6    4.2
zpaq -method 2        44,194,843    5.6   89,300,673    6.0    4.5
zpaq -method 3        41,571,269   18.3   84,130,495   18.9   16.5
zpaq -method 4        41,051,873   43.6   83,271,345   45.4   33.2
zpaq -method 5        37,409,528   88.9   75,589,248   92.4  149.1
zpaq -method 6        36,028,786  299.1   72,694,615  311.6  518.7

Nanozip 0.09 does not support update of existing archives. Results are
shown for compressing both directories together.

nz -cf        (Win32) 53,923,985    1.5  132,731,778    3.9   22.1    7.0  Yes  No   No
nz -cd                42,954,791    3.9   82,506,506    7.8   21.3    6.9
nz -co                37,653,519   66.0   73,259,856  115.6   39.5
nz -cc                35,089,232  332.5   68,373,452  815.3  777.7

nz        -cf (Linux)                    132,734,286    1.4    2.5
nz -m3.5g -cf                            132,734,714    1.3    1.4
nz        -cF                             90,646,897    1.9    2.0
nz -m3.5g -cF                             90,646,570    1.9    1.9
nz        -cd                             82,505,268    3.9    1.1
nz -m3.5g -cd                             82,505,524    3.8    1.0
nz        -cdp                            79,212,425    8.4    1.2
nz -m3.5g -cdp                            79,212,436    8.4    1.8
nz        -cdP                            78,470,838    9.4    1.2
nz -m3.5g -cdP                            78,470,838    9.5    1.2
nz        -cD                             79,093,418    8.8    1.3
nz -m3.5g -cD                             79,093,249    8.8    1.5
nz        -cDp                            77,175,812   17.5    1.5
nz -m3.5g -cDp                            77,175,791   17.8    1.5
nz        -cDP                            76,279,837   16.9    1.5
nz -m3.5g -cDP                            76,279,837   16.8    1.5
nz        -co                             73,263,227   59.2   16.6
nz -m3.5g -co                             72,565,375   76.9   21.0
nz        -cO                             69,391,570  162.6   51.8
nz -m3.5g -cO                             69,284,756  170.3   50.7
nz        -cc                             68,377,052  433.8  421.6
nz -m3.5g -cc                             68,027,938  486.4  472.2