puppeteer-lambda-starter-kit icon indicating copy to clipboard operation
puppeteer-lambda-starter-kit copied to clipboard

Compression Algorithms

Open alixaxel opened this issue 8 years ago • 6 comments

In a effort to reduce the file size of the bundled headless_shell I was testing different algorithms:

File                Algorithm   Level   Bytes       MiB         %           Decompression
-----------------------------------------------------------------------------------------
headless_shell      -           -       136964856   130.62      -           -
headless_shell.gz   Gzip        1       51662087    49.27       62.28%      1.035s
headless_shell.gz   Gzip        2       50438352    48.10       63.17%      1.016s
headless_shell.gz   Gzip        3       49428459    47.14       63.91%      0.968s
headless_shell.gz   Gzip        4       47873978    45.66       65.05%      0.950s
headless_shell.gz   Gzip        5       46929422    44.76       65.74%      0.938s
headless_shell.gz   Gzip        6       46522529    44.37       66.03%      0.919s
headless_shell.gz   Gzip        7       46406406    44.26       66.12%      0.917s
headless_shell.gz   Gzip        8       46297917    44.15       66.20%      0.916s
headless_shell.gz   Gzip        9       46270972    44.13       66.22%      0.968s
headless_shell.gz   Zopfli      5       45089855    43.00       67.08%      0.931s
headless_shell.gz   Zopfli      10      45089161    43.00       67.08%      0.919s
headless_shell.gz   Zopfli      15      45086375    43.00       67.08%      0.919s
headless_shell.gz   Zopfli      20      45085868    43.00       67.08%      0.919s
headless_shell.gz   Zopfli      25      45085640    43.00       67.08%      0.929s
headless_shell.gz   Zopfli      30      45085003    43.00       67.08%      0.925s
headless_shell.gz   Zopfli      40      45084328    43.00       67.08%      0.921s
headless_shell.gz   Zopfli      50      45084098    43.00       67.08%      0.935s
headless_shell.br   Brotli      0       55401211    52.83       59.55%      0.778s
headless_shell.br   Brotli      1       54429523    51.91       60.26%      0.757s
headless_shell.br   Brotli      2       46436126    44.28       66.10%      0.659s
headless_shell.br   Brotli      3       46122033    43.99       66.33%      0.616s
headless_shell.br   Brotli      4       45050239    42.96       67.11%      0.692s
headless_shell.br   Brotli      5       40813510    38.92       70.20%      0.598s
headless_shell.br   Brotli      6       40116951    38.26       70.71%      0.601s
headless_shell.br   Brotli      7       39302281    37.48       71.30%      0.615s
headless_shell.br   Brotli      8       39038303    37.23       71.50%      0.668s
headless_shell.br   Brotli      9       38853994    37.05       71.63%      0.673s
headless_shell.br   Brotli      10      36090087    34.42       73.65%      0.765s
headless_shell.br   Brotli      11      34820408    33.21       74.58%      0.712s

Right now, the bundled version appears to be compressed with gzip level 6 at 44.37 MiB.

By switching to the gzip-compatible Zopfli we could shave an extra 1.37 MiB. On the other hand, gzip-incompatible Brotli would save us an extra 11.16 MiB!

alixaxel avatar Sep 24 '17 06:09 alixaxel

awesome benchmark, how do you do that?

Kikobeats avatar Dec 25 '17 19:12 Kikobeats

@Kikobeats Do what exactly?

alixaxel avatar Dec 26 '17 01:12 alixaxel

If you used a programmatic way to do that, like a script for benchmarking

Kikobeats avatar Dec 27 '17 23:12 Kikobeats

Just a simple bash script I wrote for it.

alixaxel avatar Dec 28 '17 00:12 alixaxel

@alixaxel do you have it somewhere uploaded? (gzip-incompatible Brotli)

XBeg9 avatar Feb 06 '18 18:02 XBeg9

@XBeg9 only on the puppeteer slack channel

alixaxel avatar Feb 08 '18 08:02 alixaxel