Entre xz, gzip e bzip2, qual algoritmo de compactação é o mais eficiente?


16

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?


'o melhor' como em 'resultando no menor tamanho de arquivo'?
Hennes

Não sei, estava tentando encontrar uma maneira de formular a pergunta para poder adicionar meu teste como resposta. Eu também não tenho idéia do por que essa coisa foi fechada. @Karan
Nathan2055

1
Oh, por que foi fechado, fácil. "Melhor" é altamente subjetivo e geralmente leva a discussões ou respostas não construtivas. A melhor compactação pode ser o menor tamanho de arquivo, compactação mais rápida, menos energia usada para compactar (por exemplo, em um laptop), menor influência no sistema durante a compactação (por exemplo, programas antigos de um único passo usando apenas um dos núcleos), ... ou uma combinação de todos esses.
21713 Hennes

Um artigo interessante para ler é tomshardware.com/reviews/winrar-winzip-7-zip-magicrar,3436.html (baseado em janelas e focado em 7zip, magicRAR, WinRAR e WinZip em vez de xz, gz ou bz, mas ainda interessante e fornecer informações básicas).
Hennes

@Hennes - Limpei o post para substituir melhor o que estava pesquisando. Além disso, obrigado pelo artigo que você mencionou, vou ler mais tarde hoje.
precisa saber é o seguinte

Respostas:


15

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.


2
Boa pesquisa. Você já experimentou as várias opções de nível de compactação oferecidas por (pelo menos) bzip2, por exemplo bzip2 -9 <file>?
Aaron Miller

@AaronMiller - Não, é possível usá-los via 7-Zip?
Nathan2055

Parece que sim, mas não tenho certeza até que ponto: veja dotnetperls.com/7-zip-examples , seção "Switch m".
Aaron Miller

7
Por curiosidade, que tipo de dados era o arquivo de teste?
GeminiDomino

Observe que diferentes tipos de dados resultarão em diferentes tamanhos compactados. Veja aqui exemplos.
Ploni

4

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


Estudante, quais eram as opções de rar? Por que não tentar o lrzip by kolivas , deve funcionar bem para imagens de disco virtual.
Osgx # 14/15

Estou migrando do RAR para o Git e tarballs para meus arquivos de texto e btrfs para todo o resto; meu motivo para usar o RAR não é o desempenho, estou usando-o por causa de recursos como registro de recuperação, soma de verificação separada de 256 bits em nível de arquivo para cada arquivo e ....
sudoer

3

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

  • xz: 4m51s @ 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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.