![]() |
BZip3: Um sucessor espiritual do bzip2 |
Recentemente eu postei o artigo Qual o futuro do bzip2? descrevendo história de mantenedores, o perigo que isso poderia ser já que tivemos história parecida com ao do xz, quem é o seu atual mantenedor e os planos para o seu futuro.
Além de agora o bzip2 ter uma nova equipe e ter surgido uma implementação em Rust do bzip2, a desenvolvedora alemã Kamila Szewczyk desenvolveu o BZip3, o sucessor espiritual do bzip2 baseado no BWT (Burrows-Wheeler transform code) sendo este melhor, mais rápido e mais poderoso.
POR BAIXO DO CAPÔ
O bzip3 foi projetado para fazer uso de multi-thread (algo que planejam implementar como pode ser conferido no anrtigo no bzip2) e supera o desempenho de compactadores como bzip2, zstd, LZMA e RAR. Seu processamento geralmente é linear mas pode realizar codificação paralela que pode possuir velocidade do linear em computadores multi-CPU e multi-core (já que cada bloco é codificado independentemente).
Particularmente eu acredito que ainda preciso entender melhor como funciona o BZip3 pois, fazendo teste descompactando o próprio código do BZip3, que dá um total de mais de 7 Megabytes, eu não consegui atingir o máximo de compressão oferecido atingindo no máximo 2.8M de compactação enquanto que baixando o BZip3 compactado com bzip2 tem o tamanho de 332K e com o xz, 280k. Estranhamente eles mesmo disponibilizam seu código também compactado com bz3 com o tamanho de 270...
![]() |
Testando a compactação do BZip3 e comparando com o gzip, bzip2 e o xz |
O BZip3 combina vários algoritmos como um contexto de order-0 que mistura codificador de entropia (métodos de compressão sem perda de dados); uso do BWT já anteriormente mencionado para processamento tempo linear e construção de arrays de sufixo do texto e então deduzir as strings do BWT (um oposto realizado pelo bzip2); uma variante especial Run-length encoding (RLE) iniciado no dado inicial que realiza a estimativa e ajustes antes de iniciar a compressão, algoritmos de Abraham Lempel e Jacob Ziv (Lempel ziv+Prediction pass = LZP), o LZ77 e codificação aritmética utilizando indicador de modelagem de contexto.
Uma coisa interessante é BZip3 não considera níveis (-1 a -9) como uma métrica de seu desempenho permitindo o usuário explicitamente especificar o tamanho do bloco de compressão (que vão de 65 KiB a 511 MiB) com a premissa de quanto maior o bloco, melhor se torna a compressão.
![]() |
Tamanho de compressão dos blocos no BZip3 |
Assim como o gzip e o bzip2, o bzip3 é somente um compactador de arquivos individuais. O tar é necessário para arquivar diretórios e assim poder compacta-los. Ao concluir a compactação, o BZip3 gera um arquivo BZ3v1.
LICENÇA
Os códigos do BZip3 estão sob diferentes licenças já que faz uso de vários recursos e algoritmos. Porém, o BZip3 está sob a LGPv3. O código é escrito na linguagem C e existem algumas partes em Python, PHP, Racket e Lua.
ARQUITETURAS E SISTEMAS OPERACIONAIS
O BZip3 está disponível para várias distribuições Linux, MacOS, diferentes BSDs e Windows. Também está disponível para x86, x86_64, armv6, armv7, aarch64, ppc64le, mips, mips64, sparc e s390x.
![]() |
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :) |
![]() |
E não esqueçam de conferir também o meu mini curso de atributos no Linux |
Nenhum comentário:
Postar um comentário
Viu algum erro e quer compartilhar seu conhecimento? então comente aí.
Observação: somente um membro deste blog pode postar um comentário.