in

Pourquoi Zip capable de compresser des fichiers uniques est-il meilleur que plusieurs fichiers avec le même contenu?

Être capable de compresser nos fichiers pour qu’il soit plus facile de les partager et / ou de les transporter peut rendre nos vies électroniques beaucoup plus faciles, mais parfois nous pouvons voir des résultats de dimensionnement étranges ou inattendus après les avoir compressés. Pourquoi donc? Le post de questions-réponses de SuperUser d’aujourd’hui a les réponses aux questions d’un lecteur confus.

La question

Le lecteur SuperUser sixtyfootersdude veut savoir pourquoi zip est capable de compresser des fichiers uniques mieux que plusieurs fichiers avec le même type de contenu:

Supposons que j’ai 10 000 fichiers XML et que je veuille les envoyer à un ami. Avant de les envoyer, j’aimerais les compresser.

Méthode 1: ne pas les compresser

Résultats:

Méthode 2: compresser chaque fichier séparément et lui envoyer 10000 fichiers XML zippés

Commander:

Résultats:

Méthode 3: créer un fichier Zip unique contenant les 10000 fichiers XML

Commander:

Résultats:

Méthode 4: concaténer les fichiers en un seul fichier et le compresser

Commander:

Résultats:

Des questions

  • Pourquoi est-ce que j’obtiens des résultats tellement meilleurs lorsque je ne fais que compresser un seul fichier?
  • Je m’attendais à obtenir de meilleurs résultats en utilisant la méthode 3 plutôt que la méthode 2, mais je ne le fais pas. Pourquoi est-ce?
  • Ce comportement est-il spécifique à zip? Si j’essayais d’utiliser Gzip, aurais-je des résultats différents?

Information additionnelle

Méta-données

L’une des réponses données suggère que la différence réside dans les métadonnées système stockées dans le fichier zip. Je ne pense pas que cela puisse être le cas. Pour le tester, j’ai fait ce qui suit:

Le fichier zip résultant est de 1,4 Mo. Cela signifie qu’il reste environ dix Mo d’espace inexpliqué.

Pourquoi zip est-il capable de compresser des fichiers uniques mieux que plusieurs fichiers avec le même type de contenu?

La réponse

Les contributeurs SuperUser Alan Shutko et Aganju ont la réponse pour nous. Tout d’abord, Alan Shutko:

La compression Zip est basée sur des modèles répétitifs dans les données à compresser, et la compression s’améliore plus le fichier est long, car de plus en plus de modèles peuvent être trouvés et utilisés.

Simplifié, si vous compressez un fichier, le dictionnaire qui mappe les codes (courts) à des motifs (plus longs) est nécessairement contenu dans chaque fichier zip résultant; si vous zippez un long fichier, le dictionnaire est «réutilisé» et devient encore plus efficace dans tout le contenu.

Si vos fichiers sont même un peu similaires (comme le texte l’est toujours), la réutilisation du «dictionnaire» devient très efficace et le résultat est un fichier zip total beaucoup plus petit.

Suivi de la réponse d’Aganju:

Dans zip, chaque fichier est compressé séparément. Le contraire est que les fichiers sont compressés ensemble. 7-zip et Rar utilisent la compression solide par défaut. Gzip et Bzip2 ne peuvent pas compresser plusieurs fichiers, donc Tar est utilisé en premier, ayant le même effet que la compression solide.

Comme les fichiers xml ont une structure similaire (et probablement un contenu similaire), si les fichiers sont compressés ensemble, la compression sera plus élevée.

Par exemple, si un fichier contient la chaîne «» et que le compresseur a déjà trouvé cette chaîne dans un autre fichier, il la remplacera par un petit pointeur vers la correspondance précédente. Si le compresseur n’utilise pas la compression solide, la première occurrence de la chaîne dans le fichier sera enregistrée comme un, qui est plus grand.

Avez-vous quelque chose à ajouter à l’explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d’autres utilisateurs de Stack Exchange férus de technologie? Consultez le fil de discussion complet ici.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Désactivez le menu global (AppMenu) dans Ubuntu 11.04 et 11.10

Désactivez le menu global (AppMenu) dans Ubuntu 11.04 et 11.10

Trouver l'emplacement réel d'un site Web avec les indicateurs Chrome

Trouver l’emplacement réel d’un site Web avec les indicateurs Chrome