Skip to content

TurboBench: Dynamic/Static web content compression benchmark #43

@powturbo

Description

@powturbo

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

Screenshot from 2023-07-09 11-20-45
speedup files

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions