Skip to content

Commit 9a3d169

Browse files
authored
Update README.md
1 parent 9ba22da commit 9a3d169

File tree

1 file changed

+63
-86
lines changed

1 file changed

+63
-86
lines changed

README.md

Lines changed: 63 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
kanzi
2-
=====
1+
# kanzi
32

43

54
Kanzi is a modern, modular, portable and efficient lossless data compressor implemented in C++.
@@ -45,93 +44,71 @@ Use at your own risk. Always keep a copy of your original files.
4544
</a>
4645

4746

48-
Silesia corpus benchmark
49-
-------------------------
47+
## Benchmarks
5048

51-
i7-7700K @4.20GHz, 32GB RAM, Ubuntu 22.04
49+
Test machine:
5250

53-
clang++ 14.0.0, tcmalloc
51+
AWS c5a8xlarge: AMD EPYC 7R32 (32 vCPUs), 64 GB RAM
5452

55-
Kanzi version 2.1 C++ implementation. Block size is 100 MB.
53+
clang++ 14.0.0-1ubuntu1.1
5654

55+
Ubuntu 22.04.3 LTS
56+
57+
Kanzi version 2.2 C++ implementation. Default block size.
58+
59+
On this machine kanzi can use up to 16 threads depending on compression level
60+
(the default block size at level 9 is 32MB, severly limiting the number of threads
61+
in use, especially with enwik8, but all tests are performed with default values).
62+
bzip3 uses 16 threads. zstd can use 2 for compression, other compressors
63+
are single threaded.
64+
65+
66+
### silesia.tar
5767

5868
| Compressor | Encoding (sec) | Decoding (sec) | Size |
5969
|---------------------------------|-----------------|-----------------|------------------|
60-
|Original | | | 211,938,580 |
61-
|**Kanzi -l 1 -j 1** | **1.1** | **0.5** | **69,399,477** |
62-
|**Kanzi -l 1 -j 6** | **0.4** | **0.2** | **69,399,477** |
63-
|Pigz 2.6 -5 -p6 | 1.0 | 0.7 | 69,170,603 |
64-
|Gzip 1.10 -5 | 4.8 | 1.0 | 69,143,980 |
65-
|Zstd 1.5.3 -2 --long=30 | 0.9 | 0.5 | 68,694,316 |
66-
|Zstd 1.5.3 -2 -T6 --long=30 | 0.4 | 0.3 | 68,694,316 |
67-
|Brotli 1.0.9 -2 --large_window=30| 1.5 | 0.8 | 68,033,377 |
68-
|Pigz 2.6 -9 -p6 | 3.0 | 0.6 | 67,656,836 |
69-
|Gzip 1.10 -9 | 15.5 | 1.0 | 67,631,990 |
70-
|Brotli 1.0.9 -4 --large_window=30| 4.1 | 0.7 | 64,267,169 |
71-
|**Kanzi -l 2 -j 1** | **2.3** | **0.7** | **63,808,747** |
72-
|**Kanzi -l 2 -j 6** | **0.9** | **0.3** | **63,808,747** |
73-
|Zstd 1.5.3 -9 --long=30 | 3.7 | 0.3 | 59,272,590 |
74-
|Zstd 1.5.3 -9 -T6 --long=30 | 2.3 | 0.3 | 59,272,590 |
75-
|**Kanzi -l 3 -j 1** | **3.5** | **1.3** | **59,199,795** |
76-
|**Kanzi -l 3 -j 6** | **1.2** | **0.4** | **59,199,795** |
77-
|Orz 1.5.0 | 7.7 | 2.0 | 57,564,831 |
78-
|Brotli 1.0.9 -9 --large_window=30| 36.7 | 0.7 | 56,232,817 |
79-
|Lzma 5.2.2 -3 | 24.1 | 2.6 | 55,743,540 |
80-
|**Kanzi -l 4 -j 1** | **6.2** | **4.2** | **54,998,198** |
81-
|**Kanzi -l 4 -j 6** | **2.0** | **1.2** | **54,998,198** |
82-
|Bzip2 1.0.6 -9 | 14.9 | 5.2 | 54,506,769 |
83-
|Zstd 1.5.3 -19 --long=30 | 62.0 | 0.3 | 52,828,057 |
84-
|Zstd 1.5.3 -19 -T6 --long=30 | 62.0 | 0.4 | 52,828,057 |
85-
|**Kanzi -l 5 -j 1** | **11.3** | **4.5** | **51,760,244** |
86-
|**Kanzi -l 5 -j 6** | **3.6** | **1.5** | **51,760,244** |
87-
|Brotli 1.0.9 --large_window=30 | 356.2 | 0.9 | 49,383,136 |
88-
|Lzma 5.2.2 -9 | 65.6 | 2.5 | 48,780,457 |
89-
|**Kanzi -l 6 -j 1** | **13.6** | **6.2** | **48,068,000** |
90-
|**Kanzi -l 6 -j 6** | **4.2** | **2.1** | **48,068,000** |
91-
|bsc 3.2.3 -b100 -T -t | 8.8 | 6.0 | 46,932,394 |
92-
|bsc 3.2.3 -b100 | 5.4 | 4.9 | 46,932,394 |
93-
|BCM 1.65 -b100 | 15.5 | 21.1 | 46,506,716 |
94-
|**Kanzi -l 7 -j 1** | **16.7** | **11.1** | **46,447,003** |
95-
|**Kanzi -l 7 -j 6** | **5.2** | **3.7** | **46,447,003** |
96-
|Tangelo 2.4 | 83.2 | 85.9 | 44,862,127 |
97-
|zpaq v7.14 m4 t1 | 107.3 | 112.2 | 42,628,166 |
98-
|zpaq v7.14 m4 t12 | 108.1 | 111.5 | 42,628,166 |
99-
|**Kanzi -l 8 -j 1** | **47.8** | **49.4** | **41,821,127** |
100-
|**Kanzi -l 8 -j 6** | **15.8** | **15.5** | **41,821,127** |
101-
|Tangelo 2.0 | 302.0 | 310.9 | 41,267,068 |
102-
|**Kanzi -l 9 -j 1** | **72.4** | **74.5** | **40,361,391** |
103-
|**Kanzi -l 9 -j 6** | **26.1** | **26.9** | **40,361,391** |
104-
|zpaq v7.14 m5 t1 | 343.1 | 352.0 | 39,112,924 |
105-
|zpaq v7.14 m5 t12 | 344.3 | 350.4 | 39,112,924 |
106-
107-
108-
109-
enwik8
110-
-------
111-
112-
i7-7700K @4.20GHz, 32GB RAM, Ubuntu 22.04
113-
114-
clang++ 14.0.0, tcmalloc
115-
116-
Kanzi version 2.1 C++ implementation. Block size is 100 MB. 1 thread
117-
118-
119-
| Compressor | Encoding (sec) | Decoding (sec) | Size |
120-
|-----------------------------|-----------------|-----------------|------------------|
121-
|Original | | | 100,000,000 |
122-
|**Kanzi -l 1 -j 1** | **0.78** | **0.33** | **37,969,539** |
123-
|**Kanzi -l 2 -j 1** | **1.65** | **0.56** | **30,953,719** |
124-
|**Kanzi -l 3 -j 1** | **2.02** | **0.80** | **27,362,969** |
125-
|**Kanzi -l 4 -j 1** | **3.37** | **2.18** | **25,670,924** |
126-
|**Kanzi -l 5 -j 1** | **5.14** | **1.82** | **22,490,875** |
127-
|**Kanzi -l 6 -j 1** | **6.88** | **2.80** | **21,232,300** |
128-
|**Kanzi -l 7 -j 1** | **8.80** | **5.02** | **20,935,519** |
129-
|**Kanzi -l 8 -j 1** | **18.84** | **18.95** | **19,671,786** |
130-
|**Kanzi -l 9 -j 1** | **28.25** | **29.03** | **19,097,946** |
131-
132-
133-
Build Kanzi
134-
-----------
70+
|Original | | | 211,957,760 |
71+
|**Kanzi -l 1** | **0.284** | **0.185** | **80,284,705** |
72+
|Zstd 1.5.5 -2 | 0.761 | 0.286 | 69,590,245 |
73+
|**Kanzi -l 2** | **0.310** | **0.215** | **68,231,498** |
74+
|Brotli 1.1.0 -2 | 1.749 | 2.459 | 68,044,145 |
75+
|Gzip 1.10 -9 | 20.15 | 1.316 | 67,652,229 |
76+
|**Kanzi -l 3** | **0.501** | **0.261** | **64,916,444** |
77+
|Zstd 1.5.5 -5 | 2.003 | 0.324 | 63,103,408 |
78+
|**Kanzi -l 4** | **0.668** | **0.353** | **60,770,201** |
79+
|Zstd 1.5.5 -9 | 4.166 | 0.282 | 59,444,065 |
80+
|Brotli 1.1.0 -6 | 14.53 | 4.263 | 58,552,177 |
81+
|Zstd 1.5.5 -15 | 19.15 | 0.276 | 58,061,115 |
82+
|Brotli 1.1.0 -9 | 70.07 | 7.149 | 56,408,353 |
83+
|Bzip2 1.0.8 -9 | 16.94 | 6.734 | 54,572,500 |
84+
|**Kanzi -l 5** | **1.775** | **0.920** | **54,051,139** |
85+
|Zstd 1.5.5 -19 | 92.82 | 0.302 | 52,989,654 |
86+
|**Kanzi -l 6** | **2.614** | **1.289** | **49,517,823** |
87+
|Lzma 5.2.5 -9 | 92.6 | 3.075 | 48,744,632 |
88+
|**Kanzi -l 7** | **2.723** | **2.175** | **47,308,484** |
89+
|bzip3 1.3.2.r4-gb2d61e8 -j 16 | 2.682 | 3.221 | 47,237,088 |
90+
|**Kanzi -l 8** | **7.487** | **7.875** | **43,247,248** |
91+
|**Kanzi -l 9** | **19.29** | **19.43** | **41,807,179** |
92+
|zpaq 7.15 -m5 -t16 | 213.8 | 213.8 | 40,050,429 |
93+
94+
95+
### enwik8
96+
97+
| Compressor | Encoding (sec) | Decoding (sec) | Size |
98+
|------------------------|------------------|------------------|------------------|
99+
|Original | | | 100,000,000 |
100+
|**Kanzi -l 1** | **0.189** | **0.107** | **43,747,730** |
101+
|**Kanzi -l 2** | **0.192** | **0.120** | **37,745,093** |
102+
|**Kanzi -l 3** | **0.321** | **0.146** | **33,839,184** |
103+
|**Kanzi -l 4** | **0.349** | **0.198** | **29,598,635** |
104+
|**Kanzi -l 5** | **0.570** | **0.342** | **26,527,955** |
105+
|**Kanzi -l 6** | **0.710** | **0.554** | **24,076,669** |
106+
|**Kanzi -l 7** | **1.789** | **1.619** | **22,817,376** |
107+
|**Kanzi -l 8** | **4.639** | **4.748** | **21,181,978** |
108+
|**Kanzi -l 9** | **12.71** | **13.28** | **20,035,133** |
109+
110+
111+
## Build Kanzi
135112

136113
The C++ code can be built on Windows with Visual Studio, Linux, macOS and Android with g++ and/or clang++.
137114
There are no dependencies. Porting to other operating systems should be straightforward.
@@ -145,25 +122,25 @@ Unzip the file "Kanzi_VS2022.zip" in place.
145122
The solution generates a Windows 64 binary and library. Multithreading is supported with this version.
146123

147124
### mingw-w64
148-
Go to the source directory and run 'make clean && mingw32-make.exe'. The Makefile contains
125+
Go to the source directory and run 'make clean && mingw32-make.exe kanzi'. The Makefile contains
149126
all the necessary targets. Tested successfully on Win64 with mingw-w64 g++ 8.1.0.
150127
Multithreading is supportedwith g++ version 5.0.0 or newer.
151128
Builds successfully with C++11, C++14, C++17.
152129

153130
### Linux
154-
Go to the source directory and run 'make clean && make'. The Makefile contains all the necessary
131+
Go to the source directory and run 'make clean && make kanzi'. The Makefile contains all the necessary
155132
targets. Build successfully on Ubuntu with many versions of g++ and clang++.
156133
Multithreading is supported with g++ version 5.0.0 or newer.
157134
Builds successfully with C++98, C++11, C++14, C++17, C++20.
158135

159136
### MacOS
160-
Go to the source directory and run 'make clean && make'. The Makefile contains all the necessary
137+
Go to the source directory and run 'make clean && make kanzi'. The Makefile contains all the necessary
161138
targets. Build successfully on Ubuntu with many versions of clang++.
162139
Multithreading is supported.
163140

164141
### BSD
165142
The makefile uses the gnu-make syntax. First, make sure gmake is present (or install it: 'pkg_add gmake').
166-
Go to the source directory and run 'gmake clean && gmake'. The Makefile contains all the necessary
143+
Go to the source directory and run 'gmake clean && gmake kanzi'. The Makefile contains all the necessary
167144
targets. Multithreading is supported.
168145

169146
### Makefile targets

0 commit comments

Comments
 (0)