BZip3: Um sucessor espiritual do bzip2

 

BZip3, bzip2, xz, lzma, rar, gzip

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.


Github do BZip3

Leia mais sobre compactadores


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Lançado novo Minicurso de atributos no Linux
E não esqueçam de conferir também o meu mini curso de atributos no Linux

Comente com o Facebook:

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.

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (2) ambiente gráfico (19) AMD (14) analise (10) Andriod (16) android (7) Apple (1) arm (5) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (31) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (7) Código Fonte (54) comandos (33) comp (1) compressores (9) container (8) CPU (19) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (13) Debian (31) desempenho (2) desenvolvimento (99) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (91) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (3) diocast (1) dioliunx (3) distribuições Linux (14) Docker (13) DragonflyBSD (22) driver (2) dropbear (3) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (11) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (21) Funtoo Linux (13) games (94) garbage collector (1) gerenciadores de pacotes (4) glaucus (8) GOG (3) google (9) gpu (3) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (12) Intel (15) inteligencia artificial (2) IoT (1) ispconfig (1) jogos (38) kde (1) kernel (141) lançamento (64) leis (1) LFCS (1) libs (2) licenças (8) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (5) lkgr (1) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (173) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (7) nintendo (1) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) ONLYOFFICE (2) open source (84) OpenBSD (7) OpenShift (1) oracle (1) os vários sabores de Linux (45) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (2) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (69) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (23) redes (4) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (1) runlevel (2) rust (14) segurança digital (25) servidor web (2) servidores (3) shell (10) shell script (8) sistema operacional (25) skarnet (2) smartphones (3) Software livre e de código aberto (151) sorteio (3) Steam (10) Steam no Linux (8) supercomputadores (4) suse (6) systemd (8) terminal (89) terminal de comandos (20) toca do tux (1) toybox (28) tutorial (6) Tux (3) unboxing (7) UNIX (17) UNIX Toolbox (14) vartroy (1) vga (1) virtualização (3) vulnerabilidade (6) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) yash (1) ZFS (16) zsh (3)