phhsnews.com


phhsnews.com / Pourquoi Zip est-il capable de compresser des fichiers uniques mieux que plusieurs fichiers ayant le même contenu?

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


Pouvoir compresser nos fichiers pour faciliter leur partage et / ou leur transport La vie électronique est beaucoup plus facile, mais parfois nous pouvons voir des résultats de calibrage bizarres ou inattendus après les avoir compressés. Pourquoi donc?

La session de questions-réponses d'aujourd'hui nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web de questions-réponses.

Photo gracieuseté de Jean-Etienne Minh-Duy Poirrier (Flickr).

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 je avoir 10 000 fichiers XML et que vous voulez les envoyer à un ami. Avant de les envoyer, je voudrais les compresser

Méthode 1: Ne pas les compresser

Résultats:

Méthode 2: Zipper chaque fichier séparément et lui envoyer 10 000 fichiers XML compressés

Commande:

Résultats:

Méthode 3: Créer un fichier zip unique contenant tous les 10 000 fichiers XML

Commande:

Résultats:

Méthode 4: concaténer les fichiers dans un fichier unique et le compresser

Résultats:

Questions

  • Pourquoi obtenir des résultats aussi spectaculaires quand je ne fais que compresser un seul fichier?
  • Je m'attendais à obtenir des résultats nettement meilleurs avec la méthode 3 plutôt qu'avec la méthode 2, mais je ne pas. Pourquoi est-ce?
  • Ce comportement est-il spécifique à zip? Si j'essayais d'utiliser Gzip, aurais-je des résultats différents?

Informations supplémentaires

Méta-données

L'une des réponses donne à penser que la différence réside dans les métadonnées du système stockées dans le fichier zip. Je ne crois 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 y a encore environ 10 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?

Les contributeurs SuperUser de la réponse

Alan Shutko et Aganju la réponse pour nous. Tout d'abord, Alan Shutko:

La compression Zip est basée sur des motifs répétitifs dans les données à compresser, et la compression est d'autant meilleure que le fichier est long, plus on peut trouver de motifs plus longs.

Simplifié, si vous comprimez un fichier, le dictionnaire qui mappe les codes (courts) vers les modèles (plus longs) est nécessairement contenu dans chaque fichier zip résultant; si vous zippez un fichier long, le dictionnaire est "réutilisé" et devient encore plus efficace pour 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 compression solide , c'est-à-dire que les fichiers sont compressés ensemble. 7-zip et Rar utilisent une 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 qu'une 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 " <élément name = " et que le compresseur a déjà trouvé cette chaîne dans un autre fichier, il la remplacera par un petit pointeur sur la correspondance précédente. Si le compresseur n'utilise pas de compression solide, la première occurrence de la chaîne dans le fichier sera enregistrée comme littéral , ce 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? Découvrez le fil de discussion complet ici.


Comment monter un lecteur flash sur votre appareil Android

Comment monter un lecteur flash sur votre appareil Android

Bien que les appareils mobiles aient plus d'espace de stockage que jamais auparavant, il ne serait pas facile de faire le plein un lecteur flash directement dans votre appareil et étendre votre stockage à la volée? Lisez la suite comme nous vous montrons comment monter un lecteur flash sur votre appareil Android Pourquoi je veux faire cela Même si votre appareil Android a un slot micro SD, et pas tous les appareils le font malheureusement, il est encore inconvénient de retirer la carte SD pour le charger avec du contenu ou transférer des fichiers (surtout si vous avez des applications qui s'appuient sur le stockage de la carte SD).

(how-to)

Comment faire pour

Comment faire pour "taire" un son non lié au disque dur et non lié au ventilateur sur un ordinateur portable?

Nos appareils électroniques peuvent occasionnellement nous surprendre avec des bruits inattendus et extrêmement irritants. la solution est une priorité. Mais que faites-vous quand tous les «suspects» habituels ne sont pas la cause du problème? La séance de questions-réponses d'aujourd'hui nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web de questions et réponses.

(how-to)