Compression test
I made some test on multiple of the compression algorithms and tools found on linux.
Test setup
The algorithms were tested on the following situations:
- Lots of data with mixed types and sizes: A lot of various types of files of varying sizes. The total size of all the files is 4.36 GiB
- Non-compressible data: A lot of barely compressible files, in thes case jpeg images. The total size of all the files is 0.62 GiB
- A lot of many small text files: A lot of small text files, all the files are under 1MB in size. The total size of all the files is 0.96 GiB
- A few text files: A few text files. The total size of all the files is 9.54 MiB
- A few mixed files: A few files varying in size and type. The total size of all the files is 6.66 MiB
The algorithms tested were the following:
- XZ
- LZMA
- PGZIP (parallel gzip)
- PBZIP2 (parallel bzip2)
- LZ4
- PLZIP (parallel lzip)
- ZSTD
- RAR
- 7ZIP
- ZIP
The tests were run on a system with the following specs
- Ryzen 9 3900X CPU
- 32 GB DDR4 2133 MT/s memory
- nvme gen4 ssd
- Arch linux kernel version 6.12.8
- xfs file system
Notes: Algorithms noyed with (Best compression) were run with the options for best compression otherwise default options are used.
Commands
These were the commands used for each algorithm:
| Algorithm | Command |
|---|---|
| 7ZIP | 7z a |
| LZ4 | tar c -I"lz4" -f |
| LZ4 (Best compression) | tar c -I"lz4 -12" -f |
| LZMA | tar c -I"lzma -T0" -f |
| LZMA (Best compression) | tar c -I"lzma -9 -T0" -f |
| PBZIP2 | tar c -Ipbzip2 -f |
| PGZIP | tar c -I"pigz" -f |
| PGZIP (Best compression) | tar c -I"pigz --best" -f |
| PLZIP | tar c -I"plzip" -f |
| PLZIP (Best compression) | tar c -I"plzip -9" -f |
| RAR | rar a |
| XZ | tar c -I"xz -T0" -f |
| XZ (Best compression) | tar c -I"xz -9 -T0" -f |
| ZIP | zip -r |
| ZSTD | tar c -I"zstd -T0" -f |
| ZSTD (Best compression) | tar c -I"zstd -19 -T0" -f |
Results
All the tables have the next categories:
- Time: The time the compression process took. Lower is better.
- Compession: The compression rate after the process. Higher is better.
- Time normalized compression: The compression normalized to the time obtained ny dividing the compression by the time. Higher is better.
Non compressible data
Test with "Non compressible data" sorted by "Time"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| ZSTD | 0.618463 | 1.00274 | 1.6125 |
| LZ4 | 0.674424 | 0.999934 | 1.48284 |
| LZ4 (Best compression) | 1.31029 | 0.999934 | 0.76324 |
| PGZIP (Best compression) | 1.33104 | 1.00505 | 0.747517 |
| PGZIP | 1.56324 | 1.00505 | 0.636483 |
| PBZIP2 | 4.0795 | 1.02804 | 0.238442 |
| RAR | 15.2829 | 1.00414 | 0.065163 |
| ZIP | 16.6141 | 1.00645 | 0.0598044 |
| 7ZIP | 19.1198 | 1.01995 | 0.0512788 |
| XZ | 22.6181 | 1.01087 | 0.043737 |
| PLZIP | 23.2036 | 1.0101 | 0.042666 |
| ZSTD (Best compression) | 29.403 | 1.01446 | 0.0335254 |
| PLZIP (Best compression) | 39.529 | 1.01846 | 0.0248394 |
| XZ (Best compression) | 105.435 | 1.02264 | 0.00927452 |
| LZMA | 251.955 | 1.0119 | 0.00392229 |
| LZMA (Best compression) | 355.775 | 1.02573 | 0.00274026 |
Test with "Non compressible data" sorted by "Compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| PBZIP2 | 4.0795 | 1.02804 | 0.238442 |
| LZMA (Best compression) | 355.775 | 1.02573 | 0.00274026 |
| XZ (Best compression) | 105.435 | 1.02264 | 0.00927452 |
| 7ZIP | 19.1198 | 1.01995 | 0.0512788 |
| PLZIP (Best compression) | 39.529 | 1.01846 | 0.0248394 |
| ZSTD (Best compression) | 29.403 | 1.01446 | 0.0335254 |
| LZMA | 251.955 | 1.0119 | 0.00392229 |
| XZ | 22.6181 | 1.01087 | 0.043737 |
| PLZIP | 23.2036 | 1.0101 | 0.042666 |
| ZIP | 16.6141 | 1.00645 | 0.0598044 |
| PGZIP (Best compression) | 1.33104 | 1.00505 | 0.747517 |
| PGZIP | 1.56324 | 1.00505 | 0.636483 |
| RAR | 15.2829 | 1.00414 | 0.065163 |
| ZSTD | 0.618463 | 1.00274 | 1.6125 |
| LZ4 (Best compression) | 1.31029 | 0.999934 | 0.76324 |
| LZ4 | 0.674424 | 0.999934 | 1.48284 |
Test with "Non compressible data" sorted by "Time normalized compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| ZSTD | 0.618463 | 1.00274 | 1.6125 |
| LZ4 | 0.674424 | 0.999934 | 1.48284 |
| LZ4 (Best compression) | 1.31029 | 0.999934 | 0.76324 |
| PGZIP (Best compression) | 1.33104 | 1.00505 | 0.747517 |
| PGZIP | 1.56324 | 1.00505 | 0.636483 |
| PBZIP2 | 4.0795 | 1.02804 | 0.238442 |
| RAR | 15.2829 | 1.00414 | 0.065163 |
| ZIP | 16.6141 | 1.00645 | 0.0598044 |
| 7ZIP | 19.1198 | 1.01995 | 0.0512788 |
| XZ | 22.6181 | 1.01087 | 0.043737 |
| PLZIP | 23.2036 | 1.0101 | 0.042666 |
| ZSTD (Best compression) | 29.403 | 1.01446 | 0.0335254 |
| PLZIP (Best compression) | 39.529 | 1.01846 | 0.0248394 |
| XZ (Best compression) | 105.435 | 1.02264 | 0.00927452 |
| LZMA | 251.955 | 1.0119 | 0.00392229 |
| LZMA (Best compression) | 355.775 | 1.02573 | 0.00274026 |
Lots of data with mixed types and sizes
Test with "Lots of data with mixed types and sizes" sorted by "Time"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| ZSTD | 3.46664 | 2.51686 | 0.114613 |
| LZ4 | 4.21573 | 1.5038 | 0.157738 |
| PGZIP | 9.69945 | 1.6994 | 0.0606677 |
| PGZIP (Best compression) | 22.9607 | 1.70312 | 0.0255724 |
| PBZIP2 | 25.7424 | 2.08055 | 0.0186713 |
| LZ4 (Best compression) | 40.0768 | 1.61392 | 0.0154605 |
| XZ | 75.1801 | 3.15492 | 0.00421608 |
| RAR | 87.4462 | 2.76305 | 0.00413875 |
| PLZIP | 91.6147 | 3.08922 | 0.00353334 |
| 7ZIP | 95.7274 | 3.56446 | 0.00293069 |
| ZIP | 116.916 | 1.69067 | 0.00505901 |
| PLZIP (Best compression) | 148.618 | 3.343 | 0.00201277 |
| ZSTD (Best compression) | 161.057 | 3.09079 | 0.00200886 |
| XZ (Best compression) | 240.062 | 3.46817 | 0.00120109 |
| LZMA | 1046.05 | 3.21621 | 0.000297238 |
| LZMA (Best compression) | 1226.16 | 3.51061 | 0.000232311 |
Test with "Lots of data with mixed types and sizes" sorted by "Compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| 7ZIP | 95.7274 | 3.56446 | 0.00293069 |
| LZMA (Best compression) | 1226.16 | 3.51061 | 0.000232311 |
| XZ (Best compression) | 240.062 | 3.46817 | 0.00120109 |
| PLZIP (Best compression) | 148.618 | 3.343 | 0.00201277 |
| LZMA | 1046.05 | 3.21621 | 0.000297238 |
| XZ | 75.1801 | 3.15492 | 0.00421608 |
| ZSTD (Best compression) | 161.057 | 3.09079 | 0.00200886 |
| PLZIP | 91.6147 | 3.08922 | 0.00353334 |
| RAR | 87.4462 | 2.76305 | 0.00413875 |
| ZSTD | 3.46664 | 2.51686 | 0.114613 |
| PBZIP2 | 25.7424 | 2.08055 | 0.0186713 |
| PGZIP (Best compression) | 22.9607 | 1.70312 | 0.0255724 |
| PGZIP | 9.69945 | 1.6994 | 0.0606677 |
| ZIP | 116.916 | 1.69067 | 0.00505901 |
| LZ4 (Best compression) | 40.0768 | 1.61392 | 0.0154605 |
| LZ4 | 4.21573 | 1.5038 | 0.157738 |
Test with "Lots of data with mixed types and sizes" sorted by "Time normalized compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| LZ4 | 4.21573 | 1.5038 | 0.157738 |
| ZSTD | 3.46664 | 2.51686 | 0.114613 |
| PGZIP | 9.69945 | 1.6994 | 0.0606677 |
| PGZIP (Best compression) | 22.9607 | 1.70312 | 0.0255724 |
| PBZIP2 | 25.7424 | 2.08055 | 0.0186713 |
| LZ4 (Best compression) | 40.0768 | 1.61392 | 0.0154605 |
| ZIP | 116.916 | 1.69067 | 0.00505901 |
| XZ | 75.1801 | 3.15492 | 0.00421608 |
| RAR | 87.4462 | 2.76305 | 0.00413875 |
| PLZIP | 91.6147 | 3.08922 | 0.00353334 |
| 7ZIP | 95.7274 | 3.56446 | 0.00293069 |
| PLZIP (Best compression) | 148.618 | 3.343 | 0.00201277 |
| ZSTD (Best compression) | 161.057 | 3.09079 | 0.00200886 |
| XZ (Best compression) | 240.062 | 3.46817 | 0.00120109 |
| LZMA | 1046.05 | 3.21621 | 0.000297238 |
| LZMA (Best compression) | 1226.16 | 3.51061 | 0.000232311 |
A lot of many small text files
Test with "A lot of many small text files" sorted by "Time"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| ZSTD | 1.18429 | 5.13139 | 0.164554 |
| LZ4 | 1.51286 | 3.02663 | 0.218395 |
| PGZIP | 2.15661 | 4.89074 | 0.0948099 |
| PGZIP (Best compression) | 3.30062 | 4.95067 | 0.0611984 |
| LZ4 (Best compression) | 3.99269 | 4.21619 | 0.0594038 |
| PBZIP2 | 4.90839 | 6.37939 | 0.0319361 |
| PLZIP | 22.5141 | 7.14673 | 0.00621496 |
| ZIP | 23.1998 | 3.73557 | 0.0115388 |
| XZ | 25.4004 | 7.3132 | 0.00538335 |
| RAR | 35.5695 | 4.04528 | 0.00694982 |
| 7ZIP | 46.5886 | 7.21744 | 0.00297397 |
| ZSTD (Best compression) | 50.0969 | 7.19689 | 0.0027736 |
| PLZIP (Best compression) | 53.0104 | 7.60392 | 0.00248085 |
| XZ (Best compression) | 101.392 | 7.61049 | 0.00129593 |
| LZMA | 289.196 | 7.39904 | 0.000467339 |
| LZMA (Best compression) | 401.785 | 7.65804 | 0.000325004 |
Test with "A lot of many small text files" sorted by "Compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| LZMA (Best compression) | 401.785 | 7.65804 | 0.000325004 |
| XZ (Best compression) | 101.392 | 7.61049 | 0.00129593 |
| PLZIP (Best compression) | 53.0104 | 7.60392 | 0.00248085 |
| LZMA | 289.196 | 7.39904 | 0.000467339 |
| XZ | 25.4004 | 7.3132 | 0.00538335 |
| 7ZIP | 46.5886 | 7.21744 | 0.00297397 |
| ZSTD (Best compression) | 50.0969 | 7.19689 | 0.0027736 |
| PLZIP | 22.5141 | 7.14673 | 0.00621496 |
| PBZIP2 | 4.90839 | 6.37939 | 0.0319361 |
| ZSTD | 1.18429 | 5.13139 | 0.164554 |
| PGZIP (Best compression) | 3.30062 | 4.95067 | 0.0611984 |
| PGZIP | 2.15661 | 4.89074 | 0.0948099 |
| LZ4 (Best compression) | 3.99269 | 4.21619 | 0.0594038 |
| RAR | 35.5695 | 4.04528 | 0.00694982 |
| ZIP | 23.1998 | 3.73557 | 0.0115388 |
| LZ4 | 1.51286 | 3.02663 | 0.218395 |
Test with "A lot of many small text files" sorted by "Time normalized compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| LZ4 | 1.51286 | 3.02663 | 0.218395 |
| ZSTD | 1.18429 | 5.13139 | 0.164554 |
| PGZIP | 2.15661 | 4.89074 | 0.0948099 |
| PGZIP (Best compression) | 3.30062 | 4.95067 | 0.0611984 |
| LZ4 (Best compression) | 3.99269 | 4.21619 | 0.0594038 |
| PBZIP2 | 4.90839 | 6.37939 | 0.0319361 |
| ZIP | 23.1998 | 3.73557 | 0.0115388 |
| RAR | 35.5695 | 4.04528 | 0.00694982 |
| PLZIP | 22.5141 | 7.14673 | 0.00621496 |
| XZ | 25.4004 | 7.3132 | 0.00538335 |
| 7ZIP | 46.5886 | 7.21744 | 0.00297397 |
| ZSTD (Best compression) | 50.0969 | 7.19689 | 0.0027736 |
| PLZIP (Best compression) | 53.0104 | 7.60392 | 0.00248085 |
| XZ (Best compression) | 101.392 | 7.61049 | 0.00129593 |
| LZMA | 289.196 | 7.39904 | 0.000467339 |
| LZMA (Best compression) | 401.785 | 7.65804 | 0.000325004 |
A few text files
Test with "A few text files" sorted by "Time"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| LZ4 | 0.023663 | 1.1127 | 37.9798 |
| PGZIP | 0.0332351 | 1.13478 | 26.5149 |
| PGZIP (Best compression) | 0.0341132 | 1.13541 | 25.818 |
| ZSTD | 0.036551 | 1.61309 | 16.9606 |
| LZ4 (Best compression) | 0.13737 | 1.13707 | 6.40209 |
| ZIP | 0.237154 | 1.08497 | 3.88645 |
| PBZIP2 | 0.279492 | 1.37485 | 2.6024 |
| RAR | 0.308938 | 1.10265 | 2.93557 |
| 7ZIP | 0.426743 | 2.15245 | 1.08868 |
| ZSTD (Best compression) | 0.928809 | 2.15193 | 0.500317 |
| XZ | 1.49799 | 2.15023 | 0.310461 |
| XZ (Best compression) | 1.55916 | 2.15047 | 0.298247 |
| LZMA | 1.56381 | 2.1419 | 0.298551 |
| LZMA (Best compression) | 1.57281 | 2.14211 | 0.296812 |
| PLZIP | 1.64311 | 2.14013 | 0.284375 |
| PLZIP (Best compression) | 2.30391 | 2.14365 | 0.20248 |
Test with "A few text files" sorted by "Compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| 7ZIP | 0.426743 | 2.15245 | 1.08868 |
| ZSTD (Best compression) | 0.928809 | 2.15193 | 0.500317 |
| XZ (Best compression) | 1.55916 | 2.15047 | 0.298247 |
| XZ | 1.49799 | 2.15023 | 0.310461 |
| PLZIP (Best compression) | 2.30391 | 2.14365 | 0.20248 |
| LZMA (Best compression) | 1.57281 | 2.14211 | 0.296812 |
| LZMA | 1.56381 | 2.1419 | 0.298551 |
| PLZIP | 1.64311 | 2.14013 | 0.284375 |
| ZSTD | 0.036551 | 1.61309 | 16.9606 |
| PBZIP2 | 0.279492 | 1.37485 | 2.6024 |
| LZ4 (Best compression) | 0.13737 | 1.13707 | 6.40209 |
| PGZIP (Best compression) | 0.0341132 | 1.13541 | 25.818 |
| PGZIP | 0.0332351 | 1.13478 | 26.5149 |
| LZ4 | 0.023663 | 1.1127 | 37.9798 |
| RAR | 0.308938 | 1.10265 | 2.93557 |
| ZIP | 0.237154 | 1.08497 | 3.88645 |
Test with "A few text files" sorted by "Time normalized compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| LZ4 | 0.023663 | 1.1127 | 37.9798 |
| PGZIP | 0.0332351 | 1.13478 | 26.5149 |
| PGZIP (Best compression) | 0.0341132 | 1.13541 | 25.818 |
| ZSTD | 0.036551 | 1.61309 | 16.9606 |
| LZ4 (Best compression) | 0.13737 | 1.13707 | 6.40209 |
| ZIP | 0.237154 | 1.08497 | 3.88645 |
| RAR | 0.308938 | 1.10265 | 2.93557 |
| PBZIP2 | 0.279492 | 1.37485 | 2.6024 |
| 7ZIP | 0.426743 | 2.15245 | 1.08868 |
| ZSTD (Best compression) | 0.928809 | 2.15193 | 0.500317 |
| XZ | 1.49799 | 2.15023 | 0.310461 |
| LZMA | 1.56381 | 2.1419 | 0.298551 |
| XZ (Best compression) | 1.55916 | 2.15047 | 0.298247 |
| LZMA (Best compression) | 1.57281 | 2.14211 | 0.296812 |
| PLZIP | 1.64311 | 2.14013 | 0.284375 |
| PLZIP (Best compression) | 2.30391 | 2.14365 | 0.20248 |
A few mixed files
Test with "A few mixed files" sorted by "Time"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| LZ4 | 0.0194356 | 1.99491 | 25.7916 |
| PGZIP | 0.0281055 | 2.8725 | 12.3865 |
| ZSTD | 0.0360215 | 3.09782 | 8.96153 |
| PGZIP (Best compression) | 0.0510929 | 2.8845 | 6.78529 |
| PBZIP2 | 0.0964587 | 3.3937 | 3.05482 |
| RAR | 0.16964 | 3.48817 | 1.68995 |
| LZ4 (Best compression) | 0.175575 | 2.56754 | 2.2183 |
| ZIP | 0.249501 | 2.77821 | 1.44266 |
| 7ZIP | 0.524823 | 4.15235 | 0.458873 |
| XZ | 1.22789 | 4.16868 | 0.195363 |
| LZMA | 1.23839 | 4.1687 | 0.193706 |
| PLZIP | 1.26057 | 4.15287 | 0.191022 |
| LZMA (Best compression) | 1.29071 | 4.1687 | 0.185853 |
| ZSTD (Best compression) | 1.42642 | 3.75015 | 0.186941 |
| XZ (Best compression) | 1.44246 | 4.16868 | 0.166302 |
| PLZIP (Best compression) | 2.02732 | 4.18295 | 0.117922 |
Test with "A few mixed files" sorted by "Compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| PLZIP (Best compression) | 2.02732 | 4.18295 | 0.117922 |
| LZMA (Best compression) | 1.29071 | 4.1687 | 0.185853 |
| LZMA | 1.23839 | 4.1687 | 0.193706 |
| XZ (Best compression) | 1.44246 | 4.16868 | 0.166302 |
| XZ | 1.22789 | 4.16868 | 0.195363 |
| PLZIP | 1.26057 | 4.15287 | 0.191022 |
| 7ZIP | 0.524823 | 4.15235 | 0.458873 |
| ZSTD (Best compression) | 1.42642 | 3.75015 | 0.186941 |
| RAR | 0.16964 | 3.48817 | 1.68995 |
| PBZIP2 | 0.0964587 | 3.3937 | 3.05482 |
| ZSTD | 0.0360215 | 3.09782 | 8.96153 |
| PGZIP (Best compression) | 0.0510929 | 2.8845 | 6.78529 |
| PGZIP | 0.0281055 | 2.8725 | 12.3865 |
| ZIP | 0.249501 | 2.77821 | 1.44266 |
| LZ4 (Best compression) | 0.175575 | 2.56754 | 2.2183 |
| LZ4 | 0.0194356 | 1.99491 | 25.7916 |
Test with "A few mixed files" sorted by "Time normalized compression"
| Compression Algorithm | Time | Compression | Time normalized compression |
|---|---|---|---|
| LZ4 | 0.0194356 | 1.99491 | 25.7916 |
| PGZIP | 0.0281055 | 2.8725 | 12.3865 |
| ZSTD | 0.0360215 | 3.09782 | 8.96153 |
| PGZIP (Best compression) | 0.0510929 | 2.8845 | 6.78529 |
| PBZIP2 | 0.0964587 | 3.3937 | 3.05482 |
| LZ4 (Best compression) | 0.175575 | 2.56754 | 2.2183 |
| RAR | 0.16964 | 3.48817 | 1.68995 |
| ZIP | 0.249501 | 2.77821 | 1.44266 |
| 7ZIP | 0.524823 | 4.15235 | 0.458873 |
| XZ | 1.22789 | 4.16868 | 0.195363 |
| LZMA | 1.23839 | 4.1687 | 0.193706 |
| PLZIP | 1.26057 | 4.15287 | 0.191022 |
| ZSTD (Best compression) | 1.42642 | 3.75015 | 0.186941 |
| LZMA (Best compression) | 1.29071 | 4.1687 | 0.185853 |
| XZ (Best compression) | 1.44246 | 4.16868 | 0.166302 |
| PLZIP (Best compression) | 2.02732 | 4.18295 | 0.117922 |