In meiner Anwendung muss ich Protokolle komprimieren, die Textdateien sind.
Scheint so bzip2
und gzip
hat das selbe Kompressionsverhältnis.
Ist das korrekt?
In meiner Anwendung muss ich Protokolle komprimieren, die Textdateien sind.
Scheint so bzip2
und gzip
hat das selbe Kompressionsverhältnis.
Ist das korrekt?
Antworten:
Normalerweise hat bz2 ein besseres Komprimierungsverhältnis, kombiniert mit besseren Wiederherstellungsfunktionen.
OTOH, gz ist schneller.
xz soll sogar besser sein als bz2, aber ich kenne das Timing-Verhalten nicht.
-1
ist es nicht so langsam, aber mit den Standardeinstellungen ist es eher langsam.
Letztes Update von maximumcompression.com ist Juni 2011 (Antwort im Oktober 2015 aktualisiert).
Daher wird auf dieser Website
der derzeitige weltweite Meistertextkomprimierer nicht erwähnt :
cmix
Wettbewerbe / Benchmarks:
cmix
nicht der Gewinner, da zu viel RAM benötigt wird, mehr als 20GB)Details:
Byron Knoll entwickelt sich cmix
seit 2013 aktiv als libre software (GPL) basierend auf dem Buch Data Compression Explained von Matt Mahoney . Matt Mahoney behält auch einige der oben genannten Benchmarks bei und schlägt ZPAQ ( WP ) vor, einen inkrementellen Befehlszeilenarchivierer.
Wenn Sie ein Standardwerkzeug bevorzugen (das weniger RAM benötigt), empfehle ich:
lrzip
lrzip
ist eine Weiterentwicklung rzip
von Con Kolivas .
lrzip
steht für zwei Namen: Long Range ZIP und Lzma RZIP .
lrzip
ist oft besser als xz
(ein anderes beliebtes Komprimierungswerkzeug).
Alexander Riccio empfiehlt auch lrzip
.
Mein Liebling ist:
zpaq
Der "Archivierungsexperte" , Matt Mahoney , hat zehn Jahre intensiv an PAQ- Algorithmen gearbeitet und bietet den besten Kompromiss zwischen CPU- / Speicherressourcen und Komprimierungsgrad.
Die letzte zpaq
Version ist jedoch nicht oft in der aktuellen Distribution enthalten :-(
Ich kompiliere sie immer aus Quellen, wenn ich eine neue Maschine habe und einen sehr guten Kompressor benötige: https://github.com/zpaq/zpaq
clone https://github.com/zpaq/zpaq
cd zpaq
g++ -O3 -march=native -Dunix zpaq.cpp libzpaq.cpp -pthread -o zpaq
Vielleicht könnten Sie einen Blick auf diese Benchmarks werfen , insbesondere auf den Teil, der die Komprimierung der Protokolldateien testet .
Ich habe einen Benchmark zum Testen gemacht, um Folgendes zu komprimieren:
204 MB Ordner (mit 1.600 HTML-Dateien)
Ergebnisse
7zip => 2.38 MB
winrar => 49.5 MB
zip => 50.8 MB
gzip => 51.9 MB
Der 7zip ist also der beste unter ihnen, den Sie hier herunterladen können.
http://www.7-zip.org/
bz2 hat eine engere Komprimierung, der Algorithmus hat mehr Optionen, um nach Redundanz zu suchen, um diese weg zu komprimieren.
gzip enthält viel mehr Tools und ist plattformübergreifender. Weitere Windows-Tools können mit GZ-Dateien umgehen. Es ist Teil von http, sodass auch Webbrowser es verstehen können.
Unter Linux gibt es Tools, mit denen Sie komprimierte Dateien direkt bearbeiten können. zgrep und bzgrep können in komprimierten Dateien suchen.
Wenn ich nur unter Linux arbeiten würde, würde ich bzip2 verwenden, um die etwas besseren Komprimierungsraten zu erzielen.
xz komprimiert viel besser als bz2, benötigt aber mehr Zeit. Wenn also die maximale Komprimierung Ihr Ziel ist und der Speicherplatz auf Ihrer Festplatte knapp bemessen ist (was bei einer zu 98% vollen Festplatte der Fall ist - während ich meine Dateisysteme reorganisiere), können Sie ein Skript auslösen, um die Arbeit zu erledigen - Machen Sie eine Pause und kommen Sie in 5 Minuten zurück.
unxz lässt sich meiner Erfahrung nach sehr schnell dekomprimieren - was für mich täglich von Vorteil ist.
bz2 ist schneller zu komprimieren als xz, scheint aber nicht die Komprimierungsergebnisse von xz zu erreichen.
Die einzige Möglichkeit, diese Bewertungen vorzunehmen, besteht darin, Benchmarks für eine Mischung gängiger Dateien durchzuführen, die Sie normalerweise komprimieren / dekomprimieren würden, und die Parameter zu variieren, um festzustellen, welche am besten herauskommen.