Wie kommt es, werden verschiedene Textdateien unterschiedliche Größe nach der Komprimierung?

StackOverflow https://stackoverflow.com/questions/2906491

Frage

Ich habe Datei von einigen zufälligen Text size = 27 gb und nach der Kompression wird es 40 mb oder so.

Und eine 3,5 GB SQL-Datei wurde 45 Mb nach der Kompression.

Aber eine 109 MB Textdatei 72 mb nach der Kompression wurde so was falsch sein kann.

Warum so weniger komprimiert wird, muss es 10 mb oder so, oder ich bin etwas fehlt.

Alle Dateien, wie ich sehen kann, ist Englisch nur Text und und einige Grammatiksymbole (/, -. = + Etc)

Warum?

Wenn nicht, können Sie sagen, wie kann ich super eine Textdatei komprimieren?

Ich kann in PHP-Code, np in das.

War es hilfreich?

Lösung

Das Verdichtungsverhältnis einer Datei auf dessen Inhalt abhängig ist.

Die meisten Kompressionsalgorithmen arbeiten, indem sie wiederholte Daten in einer einzigen Wiederholung Umwandlung, der angibt, wie oft es wiederholt wurde.

Zum Beispiel eine Datei mit den Buchstaben a 1.000.000 Mal enthält weit mehr als eine Datei mit völlig zufälligem Inhalt komprimiert werden kann.

Weitere Informationen finden Sie weitere Informationen zur Verfügung.

Andere Tipps

Denken Sie an es auf diese Weise ... wenn Sie eine Datei, die enthält:

abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc

Die Datei im Wesentlichen speichert nur abc times 18

Auf der anderen Seite, diese Datei:

abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

konnte nur speichern:

abcdefghijklmnopqrstuvwxyz times 2

So wird die zweite Datei Kompressen als eine größere Datei als die ersten, auch wenn es kürzer ist zu beginnen.

Kompression arbeitet durch Duplikate in den Eingangsdaten zu entfernen. Ihre 3.5GB Datei wird viel weniger nach der Kompression, weil es eine Menge von doppelten Daten hat, während der kleinere Datei nicht so stark komprimiert wird, weil es nicht so viel doppelte Daten enthält.

Wenn Sie verstehen wollen, wie Kompression funktioniert, ist den meisten zippen Utilities, dann Wikipedias Blick auf Lempel-Ziv-welcher Artikel, der der Algorithmus ist, auf das die meisten diese Algorithmen gebaut werden.

PHP ist wahrscheinlich die falsche Wahl für ein solches Projekt, weil es extrem langsam in dieser Sprache verglichen werden wird perfekt guten vorhandenen Bibliotheken in C, die bereits Teil von PHP selbst.

Im Allgemeinen ist die Komprimierungsstufe hängt davon ab, wie viel Ähnlichkeit und Muster der Algorithmus in der Datei finden. Wenn alle Dateien Englisch Text enthalten, sind die Figuren seltsam. Ich vermute stark, dass die Dateien, die einen extremen Verdichtungsverhältnis haben enthalten große Teile von Textsegmenten zu wiederholen.

Kompression arbeitet durch Redundanz in Daten zu entfernen. Der endgültige Ort zu starten ist wahrscheinlich mit Huffman-Kodierung , die direkt einer der ersten bahnbrechenden Arbeiten auf das Problem, Sie können jedoch weiter zurück zu Shannons Originalwerken auf Informationstheorie zu graben kümmern.

Dies sind keine neuen Konzepte - sie erste bedeutende Interesse zurück in den 1940er Jahren und 50er Jahren gewonnen, wenn die Menschen bei der Übertragung von Daten effizient über sehr begrenzte Kanäle interessiert waren. Das Thema ist nicht nur von Interesse entweder Computing - es einige sehr tiefe Verbindungen mit Entropie und anderer grundlegender Physik ist. Zum Beispiel stellt sie perfekt für komprimierte Daten aus ist nicht zu unterscheiden von weißem Rauschen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top