[gull] Truc et astuces: Compression: Gagnez du temps avec Zstandard (zstd)
felix
felix at f-hauri.ch
Sun Nov 15 15:07:07 CET 2020
Bonjour,
Je voulais vous parler d'un outils de (de)compression qui m'a impressionné.
- https://fr.wikipedia.org/wiki/Zstandard
Zstandard (ou Zstd) est un algorithme de compression de données sans
perte développé à partir de 2015 par Yann Collet (également connu sous
le pseudonyme « Cyan ») et supporté par Facebook. Il s'agit aussi de
l'implémentation de référence en C de cet algorithme.
Pour ce que j'ai testé, entre 3 et 8 fois plus rapide (moins gourmand) que
gzip, avec un résultat comparable voir meilleur!
Voici un petit bench, sur une poignée de fichiers ``représentatifs'':
le pus gros: 4Gb: gzip: 138" -> 2.51G, zstd: 17" -> 2.44G (sans multithread).
Filename Size gzip bzip2 xz zstd zstd-T4
wavfile.wav 48.72K 35.02K 33.91K 32.77K 34.55K 34.55K
71.89% 69.60% 67.27% 70.91% 70.91%
.0060" .0116" .0293" .0028" .0026"
decompr. .0015" .0051" .0053" .0015"
test.svg 296.14K 43.65K 40.01K 36.03K 45.69K 45.69K
14.74% 13.51% 12.16% 15.43% 15.43%
.0107" .0323" .0741" .0039" .0039"
decompr. .0049" .0107" .0070" .0021"
script.tm 1.34M 244.04K 178.05K 183.69K 272.71K 272.71K
17.76% 12.96% 13.37% 19.85% 19.85%
.0538" .1392" .7947" .0123" .0126"
decompr. .0131" .0374" .0234" .0055"
screenshot.png 1.86M 1.86M 1.84M 1.85M 1.86M 1.86M
99.93% 98.95% 99.39% 100.00% 100.00%
.0727" .2767" .4964" .0088" .0089"
decompr. .0195" .1381" .1031" .0034"
script.log 11.20M 287.64K 200.62K 165.01K 217.67K 217.67K
2.51% 1.75% 1.44% 1.90% 1.90%
.1061" 1.3140" 1.0747" .0236" .0188"
decompr. .0448" .1186" .0432" .0104"
somesources.tar 372.65M 91.52M 71.53M 57.02M 81.61M 81.61M
24.56% 19.19% 15.30% 21.90% 21.90%
11.1434" 37.0908" 2'9.7232" 1.8509" .8362"
decompr. 2.0741" 10.1793" 3.8732" .5316"
win10rescu.ntfs 408.52M 384.73M 385.64M 380.21M 382.04M 382.04M
94.18% 94.40% 93.07% 93.52% 93.52%
13.2750" 1'2.3206" 2'32.0821" .6944" .4324"
decompr. 2.1684" 27.1485" 1.9638" .1726"
asteriskLxc.tar 862.93M 359.65M 327.50M 260.45M 344.98M 344.98M
41.68% 37.95% 30.18% 39.98% 39.98%
36.6076" 1'30.2886" 5'50.4520" 5.3150" 2.5338"
decompr. 6.1810" 34.1689" 17.3148" 1.5118"
windowusers.tar 4.09G 2.51G 2.47G 2.28G 2.44G 2.44G
61.40% 60.30% 55.70% 59.72% 59.72%
2'17.8952" 8'29.0160" 21'48.6027" 17.3199" 8.8711"
decompr. 26.6442" 3'18.4641" 1'26.5552" 4.7437"
(l'option -T n'est pas utile pour la décompression)
Cependant, le ``multithread ne divise pas le temps par le nombre de procs:''
somesources.tar 372.65M -> 81.61M
T1 1.809713" T2 1.043093" T3 0.858810" T4 0.823303"
windowusers.tar 4.09G -> 2.44G
T1 16.674683" T2 9.901385" T3 8.516600" T4 8.307437"
Il semble que le rapport de gain est meilleur pour -T3, que pour -T2 ou -T4,
mais -T1 conserve le meilleur rapport temps/coeur.
Je n'ai que 4 coeurs à dispo et c'est pas du xeon...
'faudrait tester sur un xeon 24 coeurs!
Voilà. Bon dimanche!
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list