Antworten:
Es kommt sehr darauf an, welche Daten komprimiert werden. Ein schneller Test mit einer 1-GB-Datei voller Nullen ergibt eine komprimierte Größe von ~ 120 KB, sodass Ihre 10-KB-Datei möglicherweise auf ~ 85 MB erweitert werden kann.
Wenn die Daten zu Beginn nur eine geringe Redundanz aufweisen, enthält das Archiv Bilddateien in einem Format, das nativ komprimiert ist (gif, jpg, png, ...), fügt gzip möglicherweise überhaupt keine weitere Komprimierung hinzu. Für Binärdateien wie ausführbare Programme wird möglicherweise eine Komprimierung von bis zu 2: 1 angezeigt, für Nur-Text-, HTML- oder andere Markups ist 3: 1 oder 4: 1 oder mehr nicht unwahrscheinlich. In einigen Fällen wird möglicherweise 10: 1 angezeigt, aber die Anzeige von ~ 8700: 1 mit einer Datei, die mit einem einzelnen Symbol gefüllt ist, ist etwas, das Sie außerhalb ähnlich künstlicher Umstände nicht sehen werden.
Sie können überprüfen, wie viele Daten beim Entpacken einer gzip-Datei anfallen würden, ohne ihren unkomprimierten Inhalt tatsächlich auf die Festplatte zu schreiben. Dadurch gunzip -c file.gz | wc --bytes
wird die Datei dekomprimiert, die Ergebnisse jedoch nicht gespeichert. Stattdessen werden sie an diese Datei übergeben, wobei wc
die Anzahl der Bytes bei der Übergabe gezählt wird dann verwerfen sie. Wenn komprimierte Inhalte eine TAR - Datei enthält viele viele kleine Dateien sind vielleicht, dass deutlich mehr Speicherplatz finden benötigt , um das vollständige Archiv zu entpacken, aber in den meisten Fällen die Zählung von Rohrleitungen zurück gunzip
Ausgang durch wc
wird so genau sein , wie Sie benötigen.
phpinfo()
, sehr gut komprimieren. Die technischen Informationen in dieser Ausgabe enthalten mehr direkte Wiederholungen als der durchschnittliche Teil der natürlichen Sprache. Die Alphabetverteilung ist wahrscheinlich weniger glatt, was dazu beitragen könnte, dass die Huffman-Stufe bessere Ergebnisse erzielt.
Normalerweise erhalten Sie nicht mehr als 95% Komprimierung (sodass 10 kB komprimierte Daten auf ~ 200 kB dekomprimiert werden), aber es gibt speziell gestaltete Dateien, die exponentiell expandieren. Achten Sie darauf 42.zip
, dass es auf wenige Petabyte (bedeutungslose) Daten dekomprimiert.
Wörtlich zitiert von https://stackoverflow.com/a/16794960/293815
Das maximale Komprimierungsverhältnis des Deflate-Formats beträgt 1032: 1. Dies liegt daran, dass der längste Lauf, der codiert werden kann, 258 Byte beträgt. Für jeden solchen Lauf sind mindestens zwei Bits erforderlich (ein Bit für den Längencode und ein Bit für den Entfernungscode), daher können 4 · 258 = 1032 nicht komprimierte Bytes pro komprimiertem Byte codiert werden.
Sie können mehr Komprimierung erzielen, indem Sie das Ergebnis von gzip gzippen. Normalerweise verbessert das die Komprimierung nicht, aber für sehr lange Läufe kann es.
Übrigens ist der von deflate verwendete LZ77-Ansatz allgemeiner als die Lauflängencodierung. Anstelle von nur einer Länge wird ein Länge / Distanz-Paar verwendet. Dies ermöglicht das Kopieren eines Strings aus einiger Entfernung oder das Replizieren eines Bytes in Lauflänge für eine Entfernung von 1 oder das Replizieren von Dreifachen von Bytes mit einer Entfernung von 3 usw.
Das Kompressionsverhältnis eines Kompressionsalgorithmus hängt von den zu komprimierenden Daten ab (abgesehen von der Länge dieser Daten).
Hier ist eine Analyse bei MaximumCompression .
Schauen Sie sich eines der Beispiele an wie:
Zusammenfassung der Benchmark-Tests für die Komprimierung mehrerer Dateien
Dateityp: Mehrere Dateitypen (insgesamt 46) Anzahl der zu komprimierenden Dateien in diesem Test: 510 Gesamtdateigröße (Byte): 316.355.757 Durchschnittliche Dateigröße (Byte): 620.305 Größte Datei (Bytes): 18.403.071 Kleinste Datei (Bytes): 3.554
Eine große Datei mit nur einem Symbol wird sehr gut komprimiert.
Die Antwort auf Ihre Frage hängt von der Eingabe ab. Um Ihnen eine Vorstellung davon zu geben, wie die Komprimierung durchgeführt wird, sehen Sie sich diese sechs Minuten langen Videos an.
https://www.youtube.com/watch?v=ZdooBTdW5bM
Was Sie daraus ziehen sollten, ist, dass die Komprimierungsrate von der Häufigkeit der einzelnen Zeichen abhängt, es gibt also keine generelle maximale Rate, sie hängt von der Eingabe ab, für englischen Text sind es ungefähr 65 Prozent.