Web Content Compression Benchmark.zlib brotli zstd zlib_ng libdeflate igzip,...
TurboBench: Dynamic/Static web content compression benchmark · Issue #43 · powturbo/TurboBench

          file html8 : 100MB random html pages from a 1m Alexa Top sites corpus.
Number of pages = 1178
Average length = 84886 bytes
The pages (length + content) are concatenated into a single html8 file,
but compressed/decompressed separately using the multiblock mode in TurboBench.
compress: page1,page2,...pageN
decompress : Page1,page2,...pageN
In the speedup (see below) plots you can see the best compressors for content providers:

brotli 11 is best for static content
brotli 5 is best until 1MB/s network transfer speed
libdeflate 6 is best from 1MB/s to 6MB/s (followed by brotli,4)
igzip 1,2 is best for very fast networks > 10MB/s

Remarks:

Note that for web-content, the difference in decompression speed between zlib, brotli and others is practically imperceptible to the user.
Actually there are only web server support for zlib, zlib_ng, slz and brotli.
zstd is included only as reference as it is not compatible with web content encoding.

Unlike other benchmarks on the net, this is pure memory benchmark without any additional (http) server overhead.
Page Statistics:
Page Length: Minimum = 16kb, Maximum = 128kb
bits histogram:
15:######################## 24%
16:####################################### 39%
17:##################################### 37%
Lenovo Ideapad Pro 5 / CPU 7840HS 3.8-5.1GHz, DDR5 6400MHz



C Size
R%
C MB/s
D MB/s
Name
C Mem
D Mem
C Stack
D Stack




16457986
16.5
1.41
612.34
brotli 11
10,629,680
247,672




18579017
18.6
60.35
703.56
brotli 5
10,711,032
199,384




18996682
19.0
0.53
1787.41
zstd 22
815,429,856
191,952




19615056
19.6
0.34
1003.78
zopfli
33,644,120
14,352




19766557
19.8
7.10
1661.60
libdeflate 12
18,027,032
23,152




19971457
20.0
135.89
716.37
brotli 4
10,153,192
198,904




19974358
20.0
5.64
2092.36
zstd 15
72,091,872
191,952




20282366
20.3
96.65
1700.68
libdeflate 9
1,336,592
23,152




20363869
20.4
55.00
687.49
zlib 9
274,096
14,320




20451000
20.5
84.95
1130.76
zlib_ng 9
36 GB
778,098,680




20485533
20.5
92.93
682.52
zlib 6
274,096
14,320




20502399
20.5
201.65
1702.04
libdeflate 6
1,340,024
23,152




20568950
20.6
78.85
2004.33
zstd 5
5,503,608
191,952




20592048
20.6
173.56
1141.23
zlib_ng 6
36 GB!
778,098,680




21624240
21.6
242.98
702.77
brotli 2
9,235,608
231,792




22159165
22.2
434.23
1733.07
libdeflate 1
407,544
23,152




22484852
22.5
370.72
1483.97
igzip 3
696,336
0
7,340,032
7,340,032


22867303
22.9
374.92
2064.67
zstd 1
1,374,840
191,952




23098360
23.1
766.27
1446.97
igzip 2
663,568
0
7,340,032
7,340,032


23153034
23.2
518.39
678.09
brotli 1
1,200,512
165,704




23287503
23.3
850.51
1444.42
igzip 1
569,336
0
7,340,032
7,340,032


23723266
23.7
238.93
629.48
zlib 1
274,096
14,320




25355327
25.4
982.05
1543.00
igzip 0
1,032
0
7,340,032
7,340,032


28214601
28.2
573.26
692.20
slz 6
0
14,320
65,536



28214601
28.2
576.88
684.35
slz 9
0
14,320
65,536



29476316
29.5
587.78
679.40
slz 1
1,032
14,320
65,536



30040886
30.0
569.15
1078.03
zlib_ng 1
25 GB
778,098,680





R: Compression ratio
Mem: Heap Memory usage in bytes
Stack: Stack Memory usage in bytes
Zstd is added only as indication. There is actually no zstd content-encoding for the web

speedup files 
      