Connect with us

Wie man

Warum ist Zip in der Lage, einzelne Dateien besser zu komprimieren als mehrere Dateien mit demselben Inhalt?

Warum ist Zip in der Lage, einzelne Dateien besser zu komprimieren als mehrere Dateien mit demselben Inhalt?

Die Möglichkeit, unsere Dateien so zu komprimieren, dass sie leichter geteilt und/oder transportiert werden können, kann unser elektronisches Leben viel einfacher machen, aber manchmal sehen wir nach der Komprimierung seltsame oder unerwartete Größenergebnisse. Warum ist das so? Der heutige SuperUser Q&A-Post enthält die Antworten auf die Fragen eines verwirrten Lesers.

Die Frage

SuperUser-Leser sixtyfootersdude möchte wissen, warum zip einzelne Dateien besser komprimieren kann als mehrere Dateien mit dem gleichen Inhaltstyp:

Angenommen, ich habe 10.000 XML-Dateien und möchte sie an einen Freund senden. Bevor ich sie versende, möchte ich sie komprimieren.

Methode 1: Komprimieren Sie sie nicht

Ergebnisse:

Methode 2: Jede Datei separat komprimieren und ihm 10.000 gezippte XML-Dateien senden

Befehl:

Ergebnisse:

Methode 3: Erstellen Sie eine einzelne Zip-Datei mit allen 10.000 XML-Dateien

Befehl:

Ergebnisse:

Methode 4: Verketten Sie die Dateien in einer einzigen Datei und komprimieren Sie sie

Befehl:

Ergebnisse:

Fragen

  • Warum erhalte ich so dramatisch bessere Ergebnisse, wenn ich nur eine einzelne Datei zippe?
  • Ich hatte erwartet, mit Methode 3 drastisch bessere Ergebnisse zu erzielen als mit Methode 2, aber das tue ich nicht. Warum ist das?
  • Ist dieses Verhalten spezifisch für zip? Wenn ich versucht hätte, Gzip zu verwenden, würde ich andere Ergebnisse erhalten?

Zusätzliche Information

Metadaten

Eine der Antworten deutet darauf hin, dass der Unterschied in den Systemmetadaten liegt, die in der ZIP-Datei gespeichert sind. Ich glaube nicht, dass dies der Fall sein kann. Um es zu testen, habe ich folgendes gemacht:

Die resultierende ZIP-Datei ist 1,4 MB groß. Das bedeutet, dass noch ungefähr zehn MB ungeklärter Speicherplatz vorhanden sind.

Warum kann zip einzelne Dateien besser komprimieren als mehrere Dateien mit demselben Inhaltstyp?

Die Antwort

Die SuperUser-Mitwirkenden Alan Shutko und Aganju haben die Antwort für uns. Zunächst Alan Shutko:

Die Zip-Komprimierung basiert auf sich wiederholenden Mustern in den zu komprimierenden Daten, und die Komprimierung wird besser, je länger die Datei ist, da immer längere Muster gefunden und verwendet werden können.

Vereinfacht gesagt, wenn Sie eine Datei komprimieren, ist das Wörterbuch, das (kurze) Codes (längeren) Mustern zuordnet, notwendigerweise in jeder resultierenden ZIP-Datei enthalten; Wenn Sie eine lange Datei zippen, wird das Wörterbuch „wiederverwendet“ und wird über alle Inhalte hinweg noch effektiver.

Wenn Ihre Dateien auch nur ein bisschen ähnlich sind (wie es Text immer ist), wird die Wiederverwendung des ‘Wörterbuchs’ sehr effizient und das Ergebnis ist eine viel kleinere Gesamt-ZIP-Datei.

Gefolgt von der Antwort von Aganju:

Bei Zip wird jede Datei separat komprimiert. Das Gegenteil ist , dh Dateien werden zusammen komprimiert. 7-zip und Rar verwenden standardmäßig eine solide Komprimierung. Gzip und Bzip2 können nicht mehrere Dateien komprimieren, daher wird zuerst Tar verwendet, was den gleichen Effekt wie eine solide Komprimierung hat.

Da XML-Dateien eine ähnliche Struktur (und wahrscheinlich einen ähnlichen Inhalt) haben, ist die Komprimierung höher, wenn die Dateien zusammen komprimiert werden.

Wenn eine Datei beispielsweise die Zeichenfolge „“ enthält und der Kompressor diese Zeichenfolge bereits in einer anderen Datei gefunden hat, wird sie durch einen kleinen Zeiger auf die vorherige Übereinstimmung ersetzt. Wenn der Kompressor keine feste Komprimierung verwendet, wird das erste Vorkommen der Zeichenfolge in der Datei als größer aufgezeichnet.

Möchten Sie der Erklärung noch etwas hinzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Sehen Sie sich hier den vollständigen Diskussionsthread an.

Continue Reading
Click to comment

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tendencia