Je connais gzip depuis des années, j'ai récemment vu bzip être utilisé au travail. Sont-ils fondamentalement équivalents ou existe-t-il des avantages et inconvénients significatifs pour l'un par rapport à l'autre?
Je connais gzip depuis des années, j'ai récemment vu bzip être utilisé au travail. Sont-ils fondamentalement équivalents ou existe-t-il des avantages et inconvénients significatifs pour l'un par rapport à l'autre?
Réponses:
Gzip et bzip2 sont fonctionnellement équivalents. (Il était une fois un bzip, mais il semble avoir complètement disparu du monde.) Les autres formats de compression courants sont zip, rar et 7z; ces trois font à la fois la compression et l’archivage (regroupant plusieurs fichiers en un). Voici quelques évaluations typiques en termes de vitesse, de disponibilité et de taux de compression typiques (notez que ces évaluations sont quelque peu subjectives, ne les prenez pas comme un évangile):
decompression speed (fast > slow): gzip, zip > 7z > rar > bzip2
compression speed (fast > slow): gzip, zip > bzip2 > 7z > rar
compression ratio (better > worse): 7z > rar, bzip2 > gzip > zip
availability (unix): gzip > bzip2 > zip > 7z > rar
availability (windows): zip > rar > 7z > gzip, bzip2
Comme vous pouvez le constater, il n'y a pas de gagnant clair. Si vous souhaitez utiliser des programmes susceptibles d’être déjà installés, utilisez zip sous Windows (ou, si possible, des archives à extraction automatique, car Windows n’existe aucune de celles-ci) et gzip sous unix. Si vous voulez une compression maximale, utilisez 7z.
Rar a également un inconvénient: pour autant que je sache, il n’existe aucun logiciel libre permettant de créer des archives rar ou de décompresser toutes les archives rar. Les autres formats ont des implémentations libres et aucune revendication de brevet (sérieuse).
bzip
disparu parce qu'il utilisait le codage algorithmique breveté. En raison du brevet, il a été repensé pour utiliser le codage Huffman à la place. Au cours de cette refonte, de nouvelles fonctionnalités et améliorations ont été ajoutées. La transformation fondamentale de Burrows – Wheeler, qui en fait un algorithme de compression unique, est restée la même dans les deux versions.
Autant que je sache, gzip est globalement plus rapide, alors que bzip produit globalement une compression plus petite.
Les algorithmes ont des compromis temps, mémoire, espace différents. Gardez à l'esprit que ces algorithmes ont été écrits il y a longtemps et que votre smartphone dispose de beaucoup plus de CPU que les ordinateurs de bureau de cette époque.
Vous avez le choix entre l’universalité (.gz) et un peu plus de compression (.bz2). Vous seul pouvez dire ce qui vous intéresse le plus.
Un des avantages de .gz est qu’il peut compresser un flux, une séquence dans laquelle vous ne pouvez pas regarder en arrière. Cela en fait le compresseur officiel des flux http. J'avais besoin d'utiliser gzip une fois pour cette raison, mais il est peu probable que vous ayez à y penser.
Voici une liste de sites qui testent des algorithmes de compression. Pour trouver juste bzip et gzip, vous devrez creuser un peu, mais la plupart des sites énuméreront les caractéristiques des algorithmes. De cette façon, vous pouvez comparer ce qui est important pour vous, la taille (taux de compression), le temps, la mémoire, le processeur.
http://www.maximumcompression.com/benchmarks/benchmarks.php
D'après mon expérience, bzip a toujours offert de meilleurs taux de compression que gzip. De plus, avec 7zip en tant que gestionnaire et algorithme bzip, 7zip peut utiliser des processeurs multicœurs.
Selon http://tukaani.org/lzma/benchmarks.html , gzip se compresse deux fois plus vite que bzip2 et se décompresse dix fois plus vite.
Par exemple, pour une utilisation avec la mise en cache s3, sur travis, etc., où vous voulez une vitesse de compression / décompression, et pas seulement de petites tailles, gzip pourrait être un bon compromis.