Entre xz, gzip e bzip2, qual algoritmo de compactação fornece o menor tamanho de arquivo e velocidade mais rápida ao compactar tarballs razoavelmente grandes?
Entre xz, gzip e bzip2, qual algoritmo de compactação fornece o menor tamanho de arquivo e velocidade mais rápida ao compactar tarballs razoavelmente grandes?
Respostas:
No meu teste de estresse, eu compactuei 464 megabytes de dados usando os três formatos listados. Gzip retornou um arquivo de 364 MB. Bzip2 retornou um arquivo de 315 MB. Xz retornou um arquivo de 254 MB. Também fiz um teste de velocidade simples:
Compressão:
1: Gzip
2: Xz
3: Bzip2 (meu fã estava soprando bastante enquanto isso acontecia, indicando que meu Athlon II estava bastante tenso)
Descompressão:
1: Xz
2: Gzip
3: Bzip2
Observe que todos esses testes foram realizados com a versão mais recente do 7-Zip.
Xz é o melhor formato para compactação completa, enquanto Gzip é muito bom para velocidade. Bzip2 é decente por sua taxa de compressão, embora xz provavelmente deva ser usado em seu lugar.
bzip2 -9 <file>
?
Fiz minha própria referência na imagem vmdk de instalação de 1.1GB do Linux:
rar =260MB comp= 85s decomp= 5s
7z(p7z)=269MB comp= 98s decomp=15s
tar.xz =288MB comp=400s decomp=30s
tar.bz2=382MB comp= 91s decomp=70s
tar.gz =421MB comp=181s decomp= 5s
todos os níveis de compactação no máximo, CPU Intel I7 3740QM, memória 32GB 1600, origem e destino no disco RAM
Geralmente uso rar ou 7z para arquivar arquivos normais, como documentos.
e, para arquivar arquivos do sistema, uso .tar.gz ou .tar.xz por rolo de arquivo ou tar com as opções -z ou -J, juntamente com --preserve para compactar nativamente com tar e preservar permissões (também como .tar.7z ou .tar.rar pode ser usado)
update: como o tar preserva apenas as permissões normais e não as ACLs de qualquer maneira, também pode-se usar .7z, além de permissões de backup e restauração e ACLs manualmente via getfacl e sefacl, o que parece ser a melhor opção para arquivamento de arquivos ou backup de arquivos do sistema, pois estará completo preservar permissões e ACLs, possui soma de verificação, teste de integridade e capacidade de criptografia, a única desvantagem é que o p7zip não está disponível em todos os lugares
Eu acho que este artigo fornece resultados muito interessantes.
http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
Os formatos mais eficientes em tamanho são xz e lzma, ambos com o parâmetro -e passado.
O algoritmo mais rápido é de longe o lzop e o lz4, que podem produzir um nível de compressão não muito distante do gzip em 1,3 segundos, enquanto o gzip levou 8,1 segundos. A taxa de compactação é de 2,8 para lz4 e 3,7 para gzip.
Aqui estão alguns resultados que extraí deste artigo:
Gzip: 8.1s a 3.7
lz4: 1.3s @ 2.8
xz: 32.2s @ 5.43
xz -e: 6m40 @ 7.063
Portanto, se você realmente precisa desesperadamente de velocidade, o lz4 é incrível e ainda oferece uma taxa de compressão de 2,8.
Se você precisar desesperadamente poupar o byte, xz no nível máximo de compactação (9) fará o melhor trabalho para arquivos de texto como a fonte do kernel. No entanto, é muito longo e requer muita memória.
Uma boa opção necessária para minimizar o impacto no tempo e no espaço é o gzip. É o que eu usaria para fazer backups diários manuais de um ambiente de produção.