Faire une évaluation technico-financière de GZip, BZip2 et XZ

Cela fait un petit moment que je vois des fichiers compressés avec XZ, ce dernier est un format de compression basé sur l’algorithme LZMA2.

D’après ce que l’on peut voir sur Internet, il est très efficace pour la compression. Il est d’ailleurs utilisé dans certaines distributions Linux pour réduire la compression d’une archive afin que l’ensemble du live cd tienne dans le cdrom ou tout simplement pour réduire au maximum un paquetage (ici l’annonce du support dans Debian).

La question à 2 centimes qui se pose, c’est : est-ce que je vais remplacer le GZ par le XZ ?

Pour y répondre, je propose d’utiliser la méthode « évaluation technico-financière » que l’on retrouve souvent dans les appels d’offres publiques ici au Maroc.

Cette méthode analyse chaque offre commerciale selon deux axes en attribuant une note technique et une note financière à chaque offre en fonction de l’offre la moins chère, le prix de l’offre courante et sa note technique, puis calcule une note technico-financière selon un rapport 60% technique et 40% financier.

Pour cette évaluation, nous allons considérer les trois « répondants » suivants : GZip, BZip2 et XZ. Ils seront tous couplés avec l’utilitaire tar pour l’empaquetage des fichiers et répertoires.

  • L’axe technique, sera le taux de réduction (de compression), c’est-à-dire de combien, en pourcentage, a été réduit l’orignal.
  • L’axe financier sera mesuré avec le temps de compression mesuré avec l’utilitaire time (valeur real). Ne pas oublier le vieil adage : le temps c’est de l’argent…

Le test sera fait sur un dossier « workspace » Eclipse contenant divers projets (répertoires et fichiers). La taille totale d’origine est de 108 Mo.

On exécute donc les trois tests de compression :

Répertoire d'origine
108M    Workspaces-IAM

time tar cfz Workspaces-IAM.tar.gz Workspaces-IAM
real    0m5.585s
user    0m5.472s
sys     0m0.180s

time tar cfj Workspaces-IAM.tar.bz2 Workspaces-IAM
real    0m20.843s
user    0m20.041s
sys     0m0.280s

time tar cfJ Workspaces-IAM.tar.xz Workspaces-IAM
real    1m4.557s
user    1m3.272s
sys     0m0.628s

Résultats de la compression :

  • Workspaces-IAM.tar.gz : 71M (réduction de 34,26%)
  • Workspaces-IAM.tar.bz2 : 67M (réduction de 37,96%)
  • Workspaces-IAM.tar.xz : 64M (réduction de 40,74%)

Passons à la notation.

Note technique, réduction de :

  • 1er : XZ avec 40,74%
  • 2eme : BZip2 avec 37,96%
  • 3eme : GZip avec 34,26%

A ce stade, c’est XZ qui la meilleure note technique.

Au niveau de la partie financière, on va utiliser le temps ‘real’ donné par l’utilitaire time et l’exprimer en millisecondes.

  • 1er : GZip avec 5585 ms
  • 2eme : BZip2 avec 20843 ms
  • 3eme : XZ avec 64557 ms

La note financière sera faite en attribuant une note financière (F) à chaque solution selon la formule : F = (Pmin×Tmax) / P

Où :

  • Pmin : le prix de la solution la moins chère
  • Tmax : la plus haute note technique
  • P : prix de la solution en question

 

Ce qui donne comme résultat :

Note financière (temps de compression) :

  • 1er : GZip avec 40,74 (c’est le moins cher dont il prend directement la note technique du plus fort)
  • 2eme : BZip2 avec 10,92
  • 3eme : XZ avec 3,52

Ici c’est le GZip qui a la meilleure note financière.

Ensuite pour la note technico-financière, on a : la note finale (N) de chaque solution sera calculée en faisant la somme de 60% de la note technique (T) et 40% de la note financière (F) : N = (0,6 × T ) + (0,4 × F). La solution ayant obtenu la note finale (N) la plus élevée sera déclarée gagnante.

Note technico-financière :

  • 1er : GZip avec 36,85
  • 2eme : BZip2 avec 27,14
  • 3eme : XZ avec 25,85

Le grand gagnant pour la compression est donc GZip.

Conclusion : Je garde le GZip pour tous les jours, et le XZ si j’ai vraiment (vraiment) besoin d’économiser de la place.