2011-01-04 6 views
1

Ich erstellte eine binäre Datei mit 4.000.000 "Doppel" -Werten (insgesamt 32 MB). Dann habe ich es gezippt, und zu meiner Überraschung schrumpfte die Datei nur auf 46KB.Riesige Binärdatei wird um fast 100% schrumpfen?

Das ist fast ein 100% shriking! ist es echt? oder fehle ich hier etwas?

+0

Was sind die Werte? Alle Nullen? – Steve

+0

Ich fühle niedrigen Wert. – user562374

+0

doppelte Werte zwischen -1000 - 1000. – user3262424

Antwort

8

Die Komprimierungsrate hängt vom Algorithmus und der Daten ab. Zum Beispiel komprimieren 32 MB Nullen ziemlich gut.

aktualisieren

Meine Informatik Grundlagen sind ziemlich rostig, aber ich kann aus spekulieren, was ich mich erinnere. Ein Double kann sagen wir mal 8 Bytes (64 Bits). Ein Bereich zwischen -1000 und 1000 entspricht 2^11 aufeinanderfolgenden Ganzzahlen. Es ist also zu erwarten, dass 64-11 = 53 Bits möglicherweise von allen Zahlen geteilt werden und der größte Teil des komprimierten Speicherplatzes für die verbleibenden 11 Bits verwendet wird. Das ist eine Ersparnis von 53/64 = 82,2% bereits.

Jetzt sind Daten wahrscheinlich nicht völlig zufällig. Jeder anständige Kompressor sollte in der Lage sein, wiederholte Saiten zu erkennen und einen weiteren Gewinn zu erzielen. Ein über vereinfachtes Beispiel:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbb ==> 30a10b