This is the place for the active development of p7zip to include major modern codecs such as Brotli, Fast LZMA2, LZ4, LZ5, Lizard and Zstd. In order to support multithreading for those addional codecs, this project depends on the Multithreading Library.
Zstandard v1.4.9 is a real-time compression algorithm, providing high compression ratios. It offers a very wide range of compression / speed trade-off, while being backed by a very fast decoder.
LZ4 v1.9.3 is lossless compression algorithm, providing compression speed at 400 MB/s per core (0.16 Bytes/cycle). It features an extremely fast decoder, with speed in multiple GB/s per core (0.71 Bytes/cycle). A high compression derivative, called LZ4_HC, is available, trading customizable CPU time for compression ratio.
Fast LZMA2 v1.0.1 is a LZMA2 compression algorithm, 20% to 100% faster than normal LZMA2 at levels 5 and above, but with a slightly lower compression ratio. It uses a parallel buffered radix matchfinder and some optimizations from Zstandard. The codec uses much less additional memory per thread than standard LZMA2.
Brotli v1.0.9 is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate but offers more dense compression.
LZ5 v1.5 is a modification of LZ4 which gives a better ratio at cost of slower compression and decompression.
Lizard v1.0 is an efficient compressor with very fast decompression. It achieves compression ratio that is comparable to zip/zlib and zstd/brotli (at low and medium compression levels) at decompression speed of 1000 MB/s and faster.
We use silesia files(total size 211938580 Byte) for packaging. CPU frequency：2.60GHz |format|method|encode_size(Byte)|encode_time(ms)|encode_speed(M/s)|decode_time(ms)|decode_speed(M/s)|compression_ratio| |:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:| |zip|deflate-9|64727209|70997|2.85|2025|99.81|3.27| |zip|lzma-9|48793408|48894|4.13|4146|48.75|4.34| |zip|zstd-22|52750614|53338|3.79|1204|167.87|4.02| |7z|zstd-22|52366421|174491|1.16|1157|174.69|4.05| |7z|flzma2-9|48344259|16481|12.26|4321|46.78|4.38| |7z|lzma-9|48409482|102592|1.97|4232|47.76|4.38| |7z|lzma2-9|48407260|103302|1.96|4266|47.38|4.38| |7z|brotli-11|50406673|137781|1.47|662|305.32|4.2| |7z|lz4-12|77407750|4619|43.76|529|382.08|2.74| |7z|lz5-15|81074845|59050|3.42|568|355.85|2.61| |7z|lizard-49|62392395|29757|6.79|568|355.85|3.4|
git clone https://github.com/jinfeihan57/p7zip.git
cd p7zip && make 7z (OR make 7za OR make 7zr OR make sfx)
cd p7zip/CPP/7zip/CMAKE/ && mkdir build && cd build cmake .. make
The output should look like this:
7-Zip (a)  17.04 : Copyright (c) 1999-2021 Igor Pavlov p7zip Version 17.04 (locale=zh_CN.UTF-8,Utf16=on,HugeFiles=on,64 bits,12 CPUs x64) Formats: ... 0 CK xz xz txz (.tar) FD 7 z X Z 00 0 Z z taz (.tar) 1F 9D 0 CK zstd zst tzstd (.tar) 0 x F D 2 F B 5 2 5 . . 0 x F D 2 F B 5 2 8 00 0 C F 7z 7z 7 z BC AF ' 1C 0 F Cab cab M S C F 00 00 00 00 ... Codecs: ... 0 4ED 303011B BCJ2 0 ED 3030103 BCJ 0 ED 3030205 PPC 0 ED 3030401 IA64 0 ED 3030501 ARM 0 ED 3030701 ARMT 0 ED 3030805 SPARC 0 ED 20302 Swap2 0 ED 20304 Swap4 0 ED 40202 BZip2 0 ED 0 Copy 0 ED 40109 Deflate64 0 ED 40108 Deflate 0 ED 3 Delta 0 ED 21 LZMA2 0 ED 30101 LZMA 0 ED 30401 PPMD 0 D 40301 Rar1 0 D 40302 Rar2 0 D 40303 Rar3 0 D 40305 Rar5 0 ED 4F71104 LZ4 0 ED 4F71101 ZSTD 0 ED 6F10701 7zAES 0 ED 6F00181 AES256CBC 1 3ED 4F712FF RawSplitter ... Hashers: ... 0 4 1 CRC32 0 20 201 SHA1 0 32 A SHA256 0 8 4 CRC64 0 32 202 BLAKE2sp ...
.7zfiles, the files like
.zstare not covered by the plugins
7z a archiv.7z -m0=bcj -m1=zstd -mx1 Fast mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=bcj -m1=zstd -mx.. ... 7z a archiv.7z -m0=bcj -m1=zstd -mx21 2nd Slowest Mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=bcj -m1=zstd -mx22 Ultra Mode, with BCJ preprocessor on executables 7z a archiv.7z -m0=bcj -m1=lz4 -mxN ...