Zusammenfassung der Benchmarktests zur Komprimierung mehrerer Dateien

Zusammenfassung der Benchmarktests zur Komprimierung mehrerer Dateien

Bildbeschreibung hier eingeben

Es gibt also verschiedene Komprimierungsverfahren in 7zip. Welches Verfahren ist für welche Aufgabe am besten geeignet?

Beispiel: Ein Unterschied zwischen LZMA und LZMA2 besteht darin, dass ich alle meine CPU-Kerne auswählen kann, während bei LZMA 2 Kerne das Maximum sind.

Antwort1

Verwenden Sie LZMA 2, es sei denn, Sie möchten das Archiv auf einem System extrahieren, das nicht mit LZMA 2-Archiven umgehen kann.

Im Allgemeinen erzielen die meisten modernen Komprimierungsalgorithmen ungefähr die gleiche Komprimierung. Was die Anzahl der Kerne betrifft, die Sie gleichzeitig verwenden können, liegt es an Ihnen, wie viele Sie verwenden möchten. Im Allgemeinen (außer Sie erstellen große Archive) gibt es jedoch keinen Grund, mehr als einen zu benötigen. Darüber hinaus kann bei der Komprimierung durch mehrere Kerne die Festplatte zum Flaschenhals werden.

Antwort2

7-Zip (zumindest seit 27.09.2019) verfügt über ein integriertes Hilfedokument mit einer sehr, sehr schönen Erklärung der verschiedenen Einstellungen, die Sie auswählen können, und wofür jede einzelne im Allgemeinen gut ist.

Es gibt zwar keine Benchmark-Ergebnisse oder ähnliches, aber die Informationen reichten aus, um mir die Gewissheit zu geben, dass ich „gut genug“ und nicht „aus Versehen schrecklich“ eingestellt hatte.

Das Hilfedokument ist über den 7-Zip-Dateimanager sowie das Dialogfeld „Zum Archiv hinzufügen“ verfügbar.

Der „Inhalts“-Pfad zur Seite, den ich hilfreich fand (und der sich direkt aus dem Dialogfeld „Zum Archiv hinzufügen“ öffnet), lautet:

File Manager / Plugins / 7-Zip / Add to Archive Dialog Box

Bildbeschreibung hier eingeben

Hier ist eine grobe Kopie/Einfügung des Abschnitts zur Komprimierungsmethode:

Methodenbeschreibung

  • LZMA
    • Es ist die grundlegende Komprimierungsmethode für das 7z-Format. Sogar alte Versionen von 7-Zip können mit der LZMA-Methode erstellte Archive dekomprimieren. Es bietet eine hohe Komprimierungsrate und eine sehr schnelle Dekomprimierung.
  • LZMA2
    • Standardkomprimierungsmethode des 7z-Formats. LZMA2 ist eine LZMA-basierte Komprimierungsmethode. Sie bietet bessere Multithreading-Unterstützung als LZMA. Die Komprimierungsrate kann jedoch in einigen Fällen schlechter sein. Für die beste Komprimierungsrate mit LZMA2 verwenden Sie 1 oder 2 CPU-Threads. Wenn Sie LZMA2 mit mehr als 2 Threads verwenden, teilt 7-zip die Daten in Blöcke auf und komprimiert diese Blöcke unabhängig voneinander (2 Threads pro Block).
  • PPMd
    • Dmitry Shkarins PPMdH-Algorithmus mit kleinen Änderungen. Normalerweise bietet er eine hohe Komprimierungsrate und hohe Geschwindigkeit für Textdateien.
  • BZip2
    • Standardkomprimierungsmethode basierend auf dem BWT-Algorithmus. Normalerweise bietet es hohe Geschwindigkeit und eine ziemlich gute Komprimierungsrate für Textdateien.
  • Entleeren
    • Standardkomprimierungsmethode für ZIP- und GZip-Formate. Die Komprimierungsrate ist nicht zu hoch. Aber die Komprimierung und Dekomprimierung ist ziemlich schnell. Die Deflate-Methode unterstützt nur ein 32-KB-Wörterbuch.
  • Deflate64
    • Modifizierte Version des Deflate-Algorithmus mit größerem Wörterbuch (64 KB).

Antwort3

Lzma2 ist schneller, wenn 4 oder mehr Kerne verwendet werden, und bietet eine bessere Komprimierung.Dieses Dokumenterklärt alles.

Antwort4

Der Link ist auf der Wayback Machine zu finden:

https://web.archive.org/web/20221015140740/http://www.maximumcompression.com/data/summary_mf2.php

(das Neuformatieren der Tabelle war lästig – man fragt sich, warum eine HTML-Tabelle nicht in das eigene Format konvertiert werden kann)

Zusammenfassung der Benchmarktests zur Komprimierung mehrerer Dateien

Dateityp: Mehrere Dateitypen (insgesamt 46)

Anzahl der in diesem Test zu komprimierenden Dateien: 510

Gesamtdateigröße (Bytes): 316.355.757

Durchschnittliche Dateigröße (Bytes): 620.305

Größte Datei (Bytes): 18.403.071

Kleinste Datei (Bytes): 3.554

Dieser Test soll die „reale“ Leistung verlustfreier Datenkompressoren modellieren. Der Testsatz enthält eine Mischung verschiedener Dateitypen, die unter Berücksichtigung der Frage „Wofür verwenden die Leute Archivierungsprogramme am häufigsten?“ ausgewählt wurden. Der Testsatz sollte Daten enthalten, die (sowohl hinsichtlich des Typs als auch des Anteils der Dateien im Satz) danach gewichtet sind, wie oft diese Dateien von normalen Benutzern mit Komprimierungssoftware zur Komprimierung verwendet werden. So enthält der Satz beispielsweise mehr txt- als .ocx-Dateien (ja, das ist willkürlich). Der Satz enthält Hunderte von Dateien und hat eine Gesamtgröße von über 300 MB. Die Idee einer großen Sammlung besteht darin, das „Rauschen“ herauszufiltern. Ein Kompressor kann bei 1 oder 2 Dateitypen eine schlechte Leistung erbringen, aber bei einer sehr großen Sammlung wird dies nicht so sehr schaden.

Einige Programme wie CCM und BZIP2 können nur eine Datei auf einmal komprimieren. Für diese Programme wird eine einzelne TAR-Datei erstellt, die alle Dateien enthält. Die Dateien in dieser TAR-Datei werden alphabetisch nach Suffix und dann nach Name sortiert. Die Ergebnisse dieser Komprimierer sind in der getarnten Spalte mit einem „Y“ gekennzeichnet.

Das Testset besteht aus folgenden Dateitypen:

Datentypen) Beschreibung % des Gesamtwerts Anzahl der Dateien
Inhaltsverzeichnis, MBX Eudora-Postfächer 12.31 16
EXE, DLL, OCX, DRV Ausführbare Dateien 10,99 35
TXT, RTF, DIC, LNG Textdateien in mehreren Sprachen 10.21 41
BMP, TIFF Bitmaps/TIF-Bilder 7,88 15
PROTOKOLL Protokolldateien 6.34 6
HTM, PHP HTML-Dateien 6.13 19
DOC MS Word-Dateien 6.08 30
C, CPP, PAS, DCU Quellcode 6.00 235
MDB, CSV Datenbanken 4.26 7
HLP Windows-Hilfedateien 4.23 7
CBF, CBG Vorkomprimierte Schachdatenbanken 3,55 2
WAV Wave-Sounddateien 3,45 9
XLS XLS-Tabellen 2.41 16
PDF Adobe Acrobat-Dokument 1,59 6
TTF TrueType-Schriftarten 1.15 15
DEF Virendefinitionsdateien 1.10 3
JPG, GIF Bilddateien 0,53 9
CHM Vorkomprimierte Hilfedateien 0,49 2
INI, INF INI-Dateien 0,42 10
Andere DAT, JAR, M3D, SYS, PPT, MAP, WP, RLL, RIB … 10,88 27

Da es ein „realistischer“ Test sein soll, werde ich mir nicht die bestmögliche (Befehlszeilen- oder GUI-)Schalterkombination für optimale Komprimierung ansehen, sondern nur eine begrenzte Anzahl testen, wie es „normale Benutzer“ tun würden. Für 7-Zip bedeutet das beispielsweise, dass ich die GUI verwende und die Ultra-Komprimierungsmethode auswähle (die mit einigen guten Befehlszeilenschaltern leicht zu schlagen ist), WinRar wird mit maximaler Wörterbuchgröße und solider Archivierung usw. getestet. Programme dürfen maximal 800 MB Speicher verwenden und müssen die Komprimierungsphase innerhalb von 12 Stunden abschließen. Die komprimierte Größe muss 50 % oder weniger der Originalgröße betragen, um auf MFC aufgeführt zu werden.

Für meine Einzeldateitests habe ich viele Anfragen erhalten, die Komprimierungszeit zu den Tabellen hinzuzufügen. Ich habe dies aus den in der Einzeldatei-Zusammenfassungsdatei genannten Gründen nicht getan, aber ich plane, die Komprimierungszeiten für diesen Mehrfachdateitest zu messen! Ich habe mich auch dazu entschieden, dieses Testset „nicht öffentlich“ zu machen, damit es für Entwickler schwieriger ist, ihr Programm auf diesen spezifischen Test abzustimmen. Ich denke, dies ist der fairste Weg, um „echte“ Leistungstests durchzuführen.

Bewertungssystem: Das Programm mit der geringsten komprimierten Größe wird als das beste Programm angesehen. Das effizienteste (sprich: voll ausnutzende) Programm wird berechnet, indem die zum Erstellen des Archivs benötigte Komprimierungs- und Dekomprimierungszeit (in Sekunden) mit der Leistung der Archivgröße geteilt durch die geringste gemessene Archivgröße multipliziert wird. Je niedriger die Punktzahl, desto besser. Die Grundidee ist, dass ein Kompressor X die gleiche Effizienz wie ein Kompressor Y hat, wenn X doppelt so schnell komprimieren kann wie Y und die resultierende Archivgröße von X 10 % größer ist als die Größe von Y. (Besonderer Dank geht an Uwe Herklotz für die richtige Formel)

Punktzahl_X = POWER(2; ((Größe_X / Größe_TOP) - 1) / 0,1) * Zeit_X

mit

  score_X     efficiency score for a certain compressor X

  time_X      time elapsed by compressor X (comp + decomp time)

  size_X      archive size achieved with compressor X

  size_TOP    archive size by top archiver (smallest benchmark result)

Formel zur Berechnung der Kompressoreffizienz basierend auf komprimierter Größe und Kompressionszeit

„0,1“ steht für 10 % und die Zweierpotenz stellt sicher, dass für jedes um 10 % schlechtere Ergebnis (im Vergleich zum Top-Kompressor) die Zeit verdoppelt wird, sodass jeder Archivierer (außer dem Top-Kompressor) eine Zeitstrafe erhält. Die Punktzahl des Top-Kompressors entspricht immer seinem Zeitwert.

verwandte Informationen