Nella mia applicazione ho bisogno di comprimere i log che sono file di testo.
Sembra che bzip2
e gzip
hanno lo stesso rapporto di compressione.
È corretto?
Nella mia applicazione ho bisogno di comprimere i log che sono file di testo.
Sembra che bzip2
e gzip
hanno lo stesso rapporto di compressione.
È corretto?
Risposte:
Normalmente, bz2 ha un miglior rapporto di compressione, combinato con migliori caratteristiche di recuperabilità.
OTOH, gz è più veloce.
Si dice che xz sia persino migliore di bz2, ma non conosco il comportamento dei tempi.
-1
, non è così lento, ma con le impostazioni predefinite, tende ad essere abbastanza lento.
L'ultimo aggiornamento di maximumcompression.com è giugno-2011 (risposta aggiornata a ottobre-2015)
Pertanto questo sito Web non menziona
l'attuale compressore di testi campione in tutto il mondo :
cmix
Concorsi / Benchmark:
cmix
non è il vincitore perché richiede troppa RAM, più di 20 GB)Dettagli:
Byron Knoll si sta attivamente sviluppando cmix
come software libre (GPL) dal 2013 basato sul libro Data Compression Explained di Matt Mahoney . Matt Mahoney mantiene anche alcuni dei parametri sopra citati e propone ZPAQ ( WP ), un archiviatore incrementale da riga di comando.
Se preferisci uno strumento più standard (richiede meno RAM) ti consiglio:
lrzip
lrzip
è un'evoluzione del rzip
by Con Kolivas .
lrzip
sta per due nomi: Long Range ZIP e Lzma RZIP .
lrzip
è spesso migliore di xz
(un altro strumento di compressione popolare).
Anche Alexander Riccio raccomanda lrzip
.
Il mio preferito è:
zpaq
L ' "esperto di archiviazione" , Matt Mahoney , ha lavorato intensamente sugli algoritmi PAQ per dieci anni e offre il miglior compromesso tra risorse CPU / memoria e livello di compressione.
Tuttavia, l' ultima zpaq
versione non è spesso impacchettata / disponibile nella recente distribuzione :-( La
compilo sempre da fonti quando ho una nuova macchina e ho bisogno di un ottimo compressore: 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
Forse potresti dare un'occhiata a quei parametri di riferimento , in particolare la parte che verifica la compressione dei file di registro .
Ho fatto un punto di riferimento per test per comprimere la seguente:
cartella di 204MB (con i file HTML) 1.600
risultati
7zip => 2.38 MB
winrar => 49.5 MB
zip => 50.8 MB
gzip => 51.9 MB
quindi il 7zip è il migliore tra questi puoi ottenerlo da qui
http://www.7-zip.org/
bz2 ha una compressione più stretta, l'algoritmo ha più opzioni per cercare la ridondanza da comprimere.
gzip ha molti più strumenti ed è più multipiattaforma. Più strumenti di Windows possono gestire i file .gz. Fa parte di http, quindi anche i browser web possono capirlo.
Su Linux, ci sono strumenti che ti consentono di lavorare direttamente sui file compressi. zgrep e bzgrep possono cercare nei file compressi.
Se solo su Linux, userei bzip2, per rapporti di compressione leggermente migliori.
xz comprime molto meglio di bz2, ma richiede più tempo. Quindi, se la massima compressione è il tuo obiettivo e lo spazio sul tuo disco rigido è un premio (che è il mio caso con un'unità piena al 98% - mentre riorganizzo i miei file system), e puoi eseguire uno script per fare il lavoro - fai una pausa e torna tra 5 minuti.
unxz è molto veloce da decomprimere nella mia esperienza, il che è una buona cosa per me ogni giorno.
bz2 è più veloce da comprimere di xz, ma non sembra ottenere i risultati di compressione di xz.
L'unico modo per effettuare queste valutazioni è eseguire benchmark rispetto a un mix di file comuni che normalmente comprimere / decomprimere e variare i parametri per vedere quale risulta migliore.