Dans le cadre d’archivage massif, j’ai fais un comparatif de différents moteurs de compression : gzip, xz et pbzip2. Le premier étant le plus utilisé quand on veut une compression manuelle. Mais les 2 autres sont les plus avantageux. De plus XZ est la « nouvelle » norme de compression pour les paquets Debian.

Condition du benchmark de compression

  • Fichier d’origine : fichier image d’une distribution linux Raspbian_For_BananaPi_v3_0.img : 3,7Gio ou 3,5Go (3670016000)
  • CPU Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
  • RAM 4Go (2Go libre au lancement)
  • Avant chaque décompression : sync; echo 3 > /proc/sys/vm/drop_caches

Je livre ici des tests réalisés une seule fois, sans faire de moyenne. Ce benchmark se veut être une simple indication plutôt qu’un test complet.

Tableau comparatif de compression

Trois points à savoir :

  • Pour le ratio la valeur la plus basse est la meilleure
  • hormis le ratio, un paramètre important est la mise en relation avec le temps. Dans le cadre d’une compression massive et au prix du Go actuel, c’est ce mode de compression qui sera favorisé. La valeur la plus petite est la meilleure
  • J’ai mis en évidence en gras les compressions intéressantes
Nom/niveau compression taille compressé (Mo) temps (min) ratio radio*temps temps déc. (min)
xz-9 768,35 127,90 21,95% 28,08 6,13
pbzip2 -p3 -9 -c 1.074,17 15,83 30,69% 4,86 10,43
pbzip2 -p2 -9 -c 1.074,17 22,13 30,69% 6,79 11,83
pbzip2 -p1 -9 -c 1.074,17 43,82 30,69% 13,45 11,52
bzip2 -9 -c 1.072,55 44,30 30,64% 13,58 11,40
gzip -9 1.163,98 40,73 33,26% 13,55 2,90
gzip -6 1.167,67 18,05 33,36% 6,02 2,70

 

Conclusion

Pour compresser efficacement, XZ est à privilégier, mais seulement si vous en avez le temps! Il prend entre 2 et 7 fois plus de temps que les autres. En plus de son taux de compression record, il affiche un temps de décompression très rapide.

Pour avoir un bon ratio de compression et rapide, privilégiez le pbzip2 qui se base sur bzip et qui permet d’utiliser plusieurs coeurs pour la compression. Avec des Intel Xeon à 8 ou 12 coeurs, cela est vraiment intéressant. C’est rétro-compatible bunzip2 évidemment, attention que la décompression est lente.

Pour des données ayant besoin d’être décompressées souvent et rapidement, ou pour parcourir rapidement une archive, gzip -6 est toujours intéressant.

Données brutes

1) xz -9 :
taille 769Mo (805668864)
temps (min) compress 127m54
ratio (taille) = 21,95%
ratio_taille * temps = 28.10
temps (min) decompress 6m8

2) pbzip2 -p3 -9 -c
taille 1,1Go (1126346556)
temps (min) compress 15m50
radio = 30,69%
ratio/temps = 4.87
temps (min) decompress 10m26

3) pbzip2 -p2 -9 -c
taille 1.1Go (1126346556)
temps (min) compress 22m8s
radio = 30,69%
ratio/temps = 6.79
temps (min) decompress 11m50

4) pbzip2 -p1 -9 -c
taille 1.1Go (1126346556)
temps (min) compress 43m49
radio = 30.69%
ratio/temps = 13.47
temps (min) decompress 11m31

5) bzip2 -9 -c
taille 1.1Go (1124653111)
temps (min) compress 44min18s
radio = 30.65%
ratio/temps = 13.55
temps (min) decompress 11m24

6) gzip -9
taille 1.2Go (1220518149)
temps (min) compress 40m44
radio = 33.26%
ratio/temps = 13.64
temps (min) decompress 2m54

7) gzip -6
taille 1.2Go (1224386980)
temps (min) compress 18m3
radio = 33.36%
ratio/temps = 6.02
temps (min) decompress 2m42