Para distribuir arquivos pela Internet, geralmente o seguinte é uma prioridade:
- Taxa de compressão (ou seja, quão pequeno o compressor torna os dados);
- Tempo de descompressão (requisitos de CPU);
- Requisitos de memória de descompressão; e
- Compatibilidade (quão amplo é o programa de descompressão)
Os requisitos de memória de compactação e CPU não são muito importantes, porque você pode usar uma máquina grande e rápida para isso e só precisa fazê-lo uma vez.
Comparado ao bzip2, o xz possui uma melhor taxa de compactação e menor (melhor) tempo de descompactação. No entanto - nas configurações de compactação normalmente usadas - requer mais memória para descomprimir [1] e é um pouco menos difundida. Gzip usa menos memória que qualquer um.
Portanto, os arquivos dos formatos gzip e xz são publicados, permitindo que você escolha:
- Precisa descompactar em uma máquina com memória muito limitada (<32 MB): gzip. Dado, não é muito provável quando se fala de fontes do kernel.
- Precisa descomprimir o mínimo de ferramentas disponíveis: gzip
- Deseja economizar tempo de download e / ou largura de banda: xz
Não existe realmente uma combinação realista de fatores que levem você a escolher o bzip2. Então está sendo eliminado.
Eu olhei comparações de compactação em um post do blog . Não tentei replicar os resultados e suspeito que alguns deles tenham mudado (principalmente, espero que xz
tenha melhorado, pois é o mais novo).
(Existem alguns cenários específicos em que uma boa implementação do bzip2 pode ser preferível ao xz: o bzip2 pode compactar um arquivo com muitos zeros e seqüências de DNA do genoma melhor que o xz. As versões mais recentes do xz agora têm um modo de bloco (opcional) que permite a recuperação de dados após o ponto de corrupção e compactação paralela e [em teoria] descompactação. Anteriormente, apenas o bzip2 os oferecia. [2] No entanto, nenhum deles é relevante para a distribuição do kernel)
1: No tamanho do arquivo, xz -3
está disponível bzip -9
. Então xz usa menos memória para descomprimir. Mas xz -9
(como, por exemplo, usado para tarballs do kernel do Linux), usa muito mais do que bzip -9
. (E ainda xz -0
precisa de mais do que gzip -9
).
2: Alteração no sistema F21: lbzip2 como implementação padrão do bzip2