[gull] Truc et astuces: Compression: Gagnez du temps avec Zstandard (zstd)

felix felix at f-hauri.ch
Sat Nov 28 13:33:48 CET 2020


On Sat, Nov 28, 2020 at 01:58:31AM +0100, Marc Mongenet wrote:
> A part ça, un algorithme de compression rapide est utile dans les
> protocoles réseaux, comme HTTP. Je viens d'ailleurs de vérifier mes
> navigateurs, et ils supportent gzip (LZ77), deflate, br (Brotli).
> Brotli occupe la place qu'aurait pu prendre zstandard.

Merci Marc, j'ai zappé brotli!!

Mais bon, je ne dirais pas qu'il occupe la place de Zstandard:
Nettement plus efficace, mais égallement nettement plus ``gourmand'':

On Sat, Nov 28, 2020 at 08:50:46AM +0100, felix wrote:
  Filename          Size     gzip     bzip2         xz     zstd     brotli
  dump tcp.pcap  220.30M  198.96M   200.57M    195.93M  195.89M    193.41M
                           90.31%    91.04%     88.94%   88.92%     87.79%
                          7.7837"  30.8489" 1'18.5894"  1.2957" 12'9.5650"


> un fichier hautement compressible de 120Mo
> 
>   Filename          Size      gzip         bzip2          xz      zstd
>   info_big.txt   121.45M   742.40K       491.98K      19.57K    12.82K
>                              0.60%         0.40%       0.01%     0.01%
>                           42.5624"  1h17'9.7551"  8'52.6467"   9.7620"
>       decompr.            10.2850"    1'31.7102"     6.1586"   5.8106"
Avec brotli, le fichier ne pèse plus que 1.2K, soit 9.29% de celui de zstd!!

Mais il prend 3'43.343", soit 5x plus de temps que gzip et 20x plus que zstd!!

Pour la décompression, il prend ~8.7" contre zstd qui prend ~5.9"...

>   -rw-r--r-- 1 user  user  127349010 nov 27 16:19 info_big.txt
>   -rw-r--r-- 1 user  user     760222 nov 27 19:44 info_big.txt.gz
>   -rw-r--r-- 1 user  user     503789 nov 27 19:44 info_big.txt.bz2
>   -rw-r--r-- 1 user  user      20036 nov 27 19:44 info_big.txt.xz
>   -rw-r--r-- 1 user  user      13127 nov 27 19:44 info_big.txt.zst
    -rw-r--r-- 1 user  user       1220 nov 28 10:15 info_big.txt.b

Le résultat de brotli sur le fichier qui contient 39'366x info.txt est
plus serré que le fichier seul, compressé avec gzip:

$ printf 'info.txt: %d, gzip: %d, zstd: %d... brotli: %d\n' $(stat -c%s $file
            ) $(gzip <$file|wc -c) $(zstd <$file|wc -c) $(brotli <$file|wc -c)
  info.txt: 3235, gzip: 1387, zstd: 1456... brotli: 1115

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list