Skip to content

Benchmarks

YadeWira edited this page Oct 21, 2026 · 12 revisions

Benchmarks

Comparison against FreeArc 0.67.1 using its built-in presets (arc.exe -cfg-), via tests/bench_vs_freearc.sh. FreeArc is only a performance oracle; PArc does not read or write .arc. Both use 4 compression threads (PARC_THREADS=4, Arc.exe -mt4); times are the best of two runs.

Test corpora (5–43 MB): C headers from /usr/include, Python sources, .so binaries, a mixed set and 3,000 small files. Total original size: 89.2 MB.

Size

Delta of total archive size (PArc − FreeArc; negative = PArc smaller):

level text binaries mixed 3,000 small files
-m1 −14.0% −10.2% −9.7% −17.8%
-m2 −3.9% −13.5% −9.1% −10.2%
-m3 −2.9% −7.4% −5.0% −4.8%
-m4 −4.5% −2.8% −2.5% −5.4%
-m5 −1.3% −0.9% −0.9% −0.5%
-m6…-m9 −1.0% −0.2% −0.3% −0.3%
-mx (fast decode) −1.0% −0.2% −0.4% −0.3%
-mxx (CM) −16.1% −8.2% −8.2% −7.5%

Aggregate ratio (compressed / original; lower is better): -m6 20.98%, -mx 20.98%, -mxx 19.15%; FreeArc -mx 21.06%.

Speed

Wall-clock time on the 44 MB mixed corpus (FreeArc includes Wine startup):

level PArc FreeArc level PArc FreeArc
-m1 0.99 s 1.68 s -m6 6.28 s 10.28 s
-m2 1.39 s 2.44 s -m7 6.06 s 10.32 s
-m3 2.93 s 3.97 s -m8 5.80 s 10.29 s
-m4 4.10 s 6.21 s -m9 5.93 s 10.60 s
-m5 4.03 s 8.60 s -mx (fast) 5.62 s 10.48 s

-mxx on the same corpus takes ~30 s.

Decoding (verification t) on the mixed corpus: -m6 2.3 s, -mx 2.3 s, -mxx 31.6 s. Moving from CM to PPMd/LZMA made -mx about 12× faster to decode while still beating FreeArc in size; -mxx keeps the old CM ratio for when decode time does not matter.

Across the four corpora PArc is smaller in 40 of 40 level×corpus pairs up to -mx and faster in 38 of 40. The two speed exceptions are -m1 and -m3 on binaries (0.94 s vs 0.59 s and 2.86 s vs 2.61 s); both still compress 10.2% and 7.4% smaller. In -m1…-m9 the typical speed advantage is 1.4–2.2× with 0.2–13.5% smaller archives. Independent blocks are compressed and verified in parallel.

Silesia Corpus

PArc 0.0.1 vs FreeArc 0.67.1, 4 threads, 211,938,580 bytes:

level PArc size PArc ratio comp. dec. FreeArc size FreeArc ratio comp. dec.
-m1 63.974.529 30,185 % 1,56 s 0,40 s 72.044.101 33,993 % 2,07 s 0,86 s
-m3 48.582.743 22,921 % 5,51 s 1,17 s 51.883.380 24,480 % 11,95 s 4,58 s
-m4 46.744.025 22,057 % 7,08 s 1,39 s 49.028.632 23,133 % 20,19 s 4,91 s
-m5 46.579.694 21,979 % 9,37 s 3,79 s 47.647.910 22,482 % 33,92 s 11,22 s
-m6 45.753.042 21,587 % 18,75 s 12,81 s 46.081.902 21,743 % 67,64 s 12,65 s
-m9 45.743.654 21,583 % 18,41 s 12,39 s 46.067.031 21,736 % 72,03 s 14,28 s
-mx 45.670.609 21,549 % 18,41 s 12,89 s 46.067.031 21,736 % 74,94 s 12,97 s
-mxx 42.915.670 20,249 % 203,94 s 207,62 s — — — —

7-Zip -mx=9 reference: 48.688.242 bytes (22,973 %), 58,90 s / 1,89 s. In Silesia, -m1…-m5 beat FreeArc in size, compression and decompression; -m4 also beats 7-Zip in all three.

Reproduce

ARC_EXE=/path/to/Arc.exe bash tests/bench_vs_freearc.sh some-directory

Numbers come from one machine and two runs per level; use them to compare methodology, not as an absolute guarantee.

Clone this wiki locally