7-Zip das Komprimierungs Rätsel?

Eselsohr

Cadet 1st Year
Registriert
Dez. 2010
Beiträge
8
Mir ist bei dem Freeware Programm 7-Zip etwas sehr merkwürdiges aufgefallen.

Um die beste Komprimierung zu erhalten sind folgende Einstellungen vorzunehmen.

Archivformat: 7z
Kompressionsstärke: Ultra
Kompressionsverfahren: LZMA
Wörterbuchgröße: 64MB
Wortgröße: 273
Größe solider Blöcke: Solide

So weit so gut, jetzt habe ich per Zufall die Version 9.07 installiert und festgestellt das man hier die Wörterbuchgröße bis 1024MB einstellen kann.
(Nicht verwechseln mit Wortgröße)

Hierzu braucht man jedoch sehr viel Hauptspeicher:

Wörterbuchgröße=64MB -> Speicherbedarf beim Komprimieren 709MB
Wörterbuchgröße=512MB -> Speicherbedarf beim Komprimieren 5413MB
Wörterbuchgröße=768MB -> Speicherbedarf beim Komprimieren 8357MB
Wörterbuchgröße=1024MB -> Speicherbedarf beim Komprimieren 10789MB
Dieser hoher Speicherbedarf wird beim Entpacken nicht benötigt.

Das ganze hat zur Folge, das man eine deutlich höhere Komprimierungs-Rate erzielen kann.
Hier ein Beispiel:

Microsoft Visual Basic 2010 Express: Unkompriemiert 1.841.787.205 byte
Kompriemiert Wörterbuchgröße 64MB 1.354.011.545 byte
Kompriemiert Wörterbuchgröße 512MB 643.209.420 byte

Wie man sieht wird hier das Archiv über 100% kleiner, das ist doch eine ganze Menge.
Ich möchte nicht wissen was man noch mit der Wörterbuchgröße=1024MB erreichen kann?
Leider habe ich nur 8GB Hauptspeicher, so das ich nicht Wörterbuchgröße=1024MB ausprobieren kann.
Wird der geforderte Hauptspeichen nicht zur Verfügung gestellt, wird das Archiv auch nicht erstellt.


Gruß Eselsohr

P.S.
Scheinbat kann man nur bei der Version 9.07 die Wörterbuchgröße > 64MB einstellen,
nur kann ich das warum nicht nachvollziehen.
 
Eselsohr schrieb:
Wie man sieht wird hier das Archiv über 100% kleiner, das ist doch eine ganze Menge.

Hihi, also wenn man was Packt bekommt man sogar noch Platz auf der Platte dazu? Über 100% Kleiner.. aus 100 MB werden also -2MB :-) *gg*

Was manche leute an Heiligabend so treiben :-)
 
Vielleicht machst du dich nicht lustig über ihn ... selbiges kann er auch zu dir sagen!

Interessant werde ich mir mal ansehen müssen! Danke für den Hinweis.
 
Wo hast du Microsoft Visual Basic 2010 Express her ? Finde keine version mit 1,8GB ? Sonnst würde ich es testen.
 
Also die 9.07 ist auch schon uralt!

Aktuell ist 9.20.
LZMA gibt es auch in der Version 2, die nochmal etwas besser sein soll.

Hintergrund Komprimierung:
Meist wird nur überprüft, welche Bit/Bytefolgen am häufigsten auftreten, diese werden fast so wie beim Morsealphabet durch Tokens ersetzt.
Die Bytekette, die am häufgsten vorkommt, bekommt das kürzeste Token.

Nun stell Dir eine 2 GB Datei vor, die in Folge willkürliche Bytes ohne Muster hat, die sich aber alle 5 MB wiederholen. Erst, wenn das Komprimierungsprogramm so große Abstände erkennen kann, kann es diese Datei auf knapp über 5 MB zusammenpressen.
Eine entsprechend große Wörterbuchgröße vorausgesetzt.

Nun stell Dir vor, dass viele Programme gewisse Codelibraries statisch gelinkt haben.
Gemeint ist, dass gewisse Byteketten bei unterschiedlichen Programmen gleich sind.
Diese Byteketten sind manchmal auch mehrere MB groß.
Und die entsprechenden Vergleichsreferenzen müssen irgendwo zwischengespeichert werden => Wörterbuch.
Daher bringt ein großes Wörterbuch eine höhere Komprimierung, verlängert aber auch den Zeitraum der Komprimierung, da mehr Referenzen durchsucht werden müssen.

Das war nur eine grobe Zusammenfassung, um es etwas plausibler zu machen.

Aber: Eine Wörterbuchgröße größer als der Speicherplatz der zu komprimierenden Dateien bringt nicht viel.
Wenn Du 512 MB komprimieren willst, brauchst Du kein Wörterbuch von 1024 MB um das Maximum herauszukitzeln.

Ich arbeite hier meist nur mit einem Wörterbuch von 256 MB und 4 Threads, was vollkommen ausreicht um sehr gute Werte zu erzielen.
 
? Ich mach mich doch nicht lustig über ihn, ich finde es nur witzig was andere Leute wo an Heiligabend treiben. Ich sitze ja auch nicht am Tannenbaum und Singe lieder.. sitze auch gerade alleine hier.. Es war auch nicht niedermachend gedacht oder so..

Stellte mir nur eben vor wie sehr viele leute am Tannenbaum sitzen und hier einige (Ich ja auch!) im CB Forum komische theorien bequatschen *gg*.

BTT: Sehr interesannt und an den vorposter... danke für die erklärung!
 
Zuletzt bearbeitet:
Eselsohr schrieb:
Mir ist bei dem Freeware Programm 7-Zip etwas sehr merkwürdiges aufgefallen.

Microsoft Visual Basic 2010 Express: Unkompriemiert 1.841.787.205 byte
Kompriemiert Wörterbuchgröße 64MB 1.354.011.545 byte
Kompriemiert Wörterbuchgröße 512MB 643.209.420 byte

Wie war denn der Zeitunterschied zw. beiden Varianten?
 
Wishbringer schrieb:
Ich arbeite hier meist nur mit einem Wörterbuch von 256 MB und 4 Threads, was vollkommen ausreicht um sehr gute Werte zu erzielen.

Welche Version von 7Zip unterstützt denn 4 Kerne? Können das die aktuellen?


Ich komprimieren grade einen 1,8GB großen Dokumente-Ordne testweise, einmal mit 64MB Dictionary und einmal mit 512MB. Das Gnaze gleichzeitig, trotzdem ist meine CPU nicht komplett ausgelastet...


EDIT:
@ Calistos: ich hab Weihnachten bis grade eben mit der Familie gefeiert, die sind aber grade gegangen...

@ AW312: Bei mir macht das so gut wie keinen Unterschied in der Zeit.
 
Mache ich mal einen Kleinen Test

Xampp Lite 163MB 2291 Dateien in 226 ordnern

Test 1
Archivformat: 7z
Kompressionsstärke: Ultra
Kompressionsverfahren: LZMA
Wörterbuchgröße: 64MB
Wortgröße: 273
Größe solider Blöcke: Solide

Zeit rund 44 sek
Größe 18,3MB

Test 2

Archivformat: 7z
Kompressionsstärke: Ultra
Kompressionsverfahren: LZMA
Wörterbuchgröße: 512MB
Wortgröße: 273
Größe solider Blöcke: Solide

Zeit rund 44 sek
Größe 18,2MB

Test 3


Archivformat: 7z
Kompressionsstärke: Ultra
Kompressionsverfahren: LZMA
Wörterbuchgröße: 1024MB
Wortgröße: 273
Größe solider Blöcke: Solide


Zeit rund 44 sek
Größe 18,2MB

Also bei mir nicht sonderlich spektakulär
 
Schau dir mal noch mal Wishbringers Posting an:
Du komprimierst gerade mal 163 MB. Da kommt eine Wörterbuchgröße
von 512 und 1024 MB natürlich nicht wirklich zum tragen. Selbst 64 MB werden wohl die wenigsten Dateien übersteigen in dem Verzeichnis.
 
Also bei mir hab ich den Ordner jetzt mal komprimiert:

Ordner normal: 2.473.821.640 Bytes
mit dictionary 64MB: 2.248.762.370 Bytes
mit dictionary 512MB: 2.011.350.338 Bytes

Es sind hauptsächlich kleine Dateien drin (.doc; .docx; .odt; und viele Bilder) Der Unterschied ist bemerkbar, aber niht sonderlich spektakulär. Der Test mit 1024MB hat mir zu lange gedauert, weil er auf die Festplatte auslagern musste.
 
Pelzameise schrieb:
Also bei mir hab ich den Ordner jetzt mal komprimiert:

Ordner normal: 2.473.821.640 Bytes
mit dictionary 64MB: 2.248.762.370 Bytes
mit dictionary 512MB: 2.011.350.338 Bytes

Es sind hauptsächlich kleine Dateien drin (.doc; .docx; .odt; und viele Bilder) Der Unterschied ist bemerkbar, aber niht sonderlich spektakulär. Der Test mit 1024MB hat mir zu lange gedauert, weil er auf die Festplatte auslagern musste.

Du hast dir denkbar ungünstige Dateien ausgesucht.
Docx und jpg Dateien sind schon komprimiert. (Ich gehe davon aus deine Bilder sind jpg Dateien.)
Wenn ich richtig gerechnet habe kommen immerhin 226MB Unterschied zustande.

Klar heute wo man 2TB für schlappe 80€ bekommt spielen 226MB keine Rolle, aber darum geht es hier ja nicht.

Dein Versuch mit 1024MB zu komprimieren wird nicht funktionieren, es sei denn du hast 12GB Hauptspeicher.


Gruß Eselsohr
 
Der Versuch mit 1024MB klappte schon, das dauerte nur ewig, weil er dabei ja auf die Platte auslagern muss.

Das es nicht die optimalen Dateien fürs komprimieren waren, ist mir schon klar, einen Unterschied sieht man aber trotzdem.
 
Pelzameise schrieb:
Der Versuch mit 1024MB klappte schon, das dauerte nur ewig, weil er dabei ja auf die Platte auslagern muss.

Das es nicht die optimalen Dateien fürs komprimieren waren, ist mir schon klar, einen Unterschied sieht man aber trotzdem.

Also ich mit meinen 8GB Hauptspeicher kann maximal mit Wörterbuchgröße=512MB komprimieren.
Wähle ich mehr als 512MB an, fängt 7-Zip zwar an zu komprimieren, wird aber nie fertig.

Den benötigten Hauptspeicher wird ja im Programm angezeigt.
Solltest du weniger als den geforderten Hauptspeicher besitzen wirst du keinen Erfolg haben.


Gruß Eselsohr
 
Pelzameise schrieb:
Welche Version von 7Zip unterstützt denn 4 Kerne? Können das die aktuellen?

Ich denke, alle 9.xx Versionen können das mit LZMA2.
LZMA (Version 1) kann "nur" zwei Kerne.
Der Speicherverbrauch steigt jedoch proportional.
 
Einstellung in 7zip v.9.20
7zipeinstellung.png


Adobe Installationsdateien
ungepackt: 4,46 GB (4.794.086.364 Bytes)
gepackt: 2,99 GB (3.212.801.640 Bytes)
Unterschied: -1,47GB -> -33%

Auslastung
test1auslastung.png


Bilder, Word Dokumente
ungepackt: 632 MB (662.746.843 Bytes)
gepackt: 259 MB (272.379.521 Bytes)
Unterschied: -373MB -> -59%
 
Zuletzt bearbeitet:
Zurück
Oben