No meu aplicativo, preciso compactar os logs que são arquivos de texto.
Parece que bzip2
e gzip
tem a mesma taxa de compressão.
Isso está correto?
No meu aplicativo, preciso compactar os logs que são arquivos de texto.
Parece que bzip2
e gzip
tem a mesma taxa de compressão.
Isso está correto?
Respostas:
Normalmente, o bz2 tem uma melhor taxa de compactação, combinada com melhores recursos de recuperação.
OTOH, gz é mais rápido.
Diz-se que xz é ainda melhor que bz2, mas não sei o comportamento do tempo.
-1
, não é tão lento, mas com as configurações padrão, ele tende a ser bastante lento.
A última atualização do maximumcompression.com é junho de 2011 (resposta atualizada em outubro de 2015)
Portanto, este site não menciona
o atual compressor de texto campeão em todo o mundo :
cmix
Competições / Benchmarks:
cmix
não é o vencedor porque requer muita memória RAM, mais de 20 GB)Detalhes:
Byron Knoll está se desenvolvendo ativamente cmix
como software livre (GPL) desde 2013, com base no livro Data Compression Explained por Matt Mahoney . Matt Mahoney também mantém alguns dos benchmarks acima e propõe o ZPAQ ( WP ), um arquivador incremental da linha de comando.
Se você preferir uma ferramenta mais padrão (exigindo menos RAM), recomendo:
lrzip
lrzip
é uma evolução rzip
por Con Kolivas .
lrzip
significa dois nomes: Long Range ZIP e Lzma RZIP .
lrzip
geralmente é melhor que xz
(outra ferramenta de compactação popular).
Alexander Riccio também recomenda lrzip
.
Meu favorito é:
zpaq
O "especialista em arquivadores" , Matt Mahoney , trabalha intensivamente nos algoritmos de PAQ há dez anos e fornece o melhor compromisso entre os recursos de CPU / memória e o nível de compactação.
No entanto, a última zpaq
versão nem sempre é empacotada / disponível na distribuição recente :-(
Sempre a compilo a partir de fontes quando tenho uma máquina nova e preciso de um compressor muito bom: 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
Talvez você possa dar uma olhada nesses benchmarks , especialmente na parte que testa a compactação dos arquivos de log .
Eu fiz um ponto de referência para teste para comprimir o seguinte:
pasta 204MB (com arquivos 1.600 html)
resultados
7zip => 2.38 MB
winrar => 49.5 MB
zip => 50.8 MB
gzip => 51.9 MB
então o 7zip é o melhor dentre eles, você pode obtê-lo aqui
http://www.7-zip.org/
O bz2 possui uma compressão mais rígida, o algoritmo tem mais opções para procurar redundância para comprimir.
O gzip possui muito mais ferramentas e é mais multiplataforma. Mais ferramentas do Windows podem lidar com arquivos .gz. É parte do http, para que até os navegadores da web possam entendê-lo.
No linux, existem ferramentas que permitem trabalhar diretamente em arquivos compactados. O zgrep e o bzgrep podem procurar em arquivos compactados.
Se apenas no Linux, eu usaria bzip2, para as taxas de compressão um pouco melhores.
O xz comprime muito melhor que o bz2, mas leva mais tempo. Portanto, se a compactação máxima é sua meta e o espaço no disco rígido é muito alto (que é o meu caso com uma unidade com 98% de capacidade - enquanto eu reorganizo meus sistemas de arquivos), e você pode disparar um script para fazer o trabalho - faça uma pausa e volte em 5 minutos.
O unxz é muito rápido para descomprimir na minha experiência - o que é uma coisa boa para mim diariamente.
O bz2 é mais rápido para compactar do que xz, mas não parece alcançar os resultados de compactação de xz.
A única maneira de fazer essas avaliações é executar benchmarks em uma mistura de arquivos comuns que você normalmente compactaria / descompactará e variará os parâmetros para ver qual sai por cima.