Estava lendo um pouco sobre o histórico do Zstd (o algortitmo de compressão criado pelo Facebook, que agora virou praticamente o padrão do Arch Linux). Tinha lá algumas tabelas fazendo várias comparações entre os algoritmos e tals, e eu pensei… “bora fazer isso, só que em casa”.
Código que eu usei (Python 3):
Enfim, ao experimento altamente científico que eu fiz:
Lutadores
-
gzip
(algoritmo dos .zip e dos .gz, incluindo tar.gz). Padrão de mercado dos últimos 20 anos.pigz
é uma versão levemente modificada (mas ainda compatível) projetada para funcionar melhor em sistemas multicore. -
zstd
(algoritmo interno do Facebook, usado nos pacotes do Arch Linux). Almeja ser o padrão do futuro. -
compress
(algoritmo do GIF). Padrão de mercado dos anos 80 e 90. -
xz
(algoritmo do 7-zip). Apesar de “invisível”, ocupa um nicho importante: os pacotes do Debian e Ubuntu, e o kernel Linux, são distribuídos nesse formato. Queria testar opixz
(tenta fazer com oxz
o mesmo que opigz
fez com ogzip
), mas não consegui fazer funcionar. -
bzip2
- usado em alguns projetos open-source para distribuir código fonte. -
lz4
,lzop
- usado em algumas distribuições para comprimir o initramfs
Arena
Usei os arquivos do Silesia Corpus, o mesmo que o Facebook cita no artigo que eu linkei lá em cima. Aqui a nós fazemo siença e reproduzimos os resultatos dos pares. Eu os pus numa subpasta ./in
da pasta onde rodei o script.
Resultados (médias)
Método Comprimiu X vezes Consome X MB/s Produz X MB/s
gzip 3.72 28.62 187.60
pigz 3.72 132.20 320.42
zstd 3.92 139.31 641.42
compress 2.94 62.20 204.84
xz 5.57 2.49 84.73
bzip2 5.45 13.30 36.97
lz4 2.34 267.83 984.40
lzop 2.25 246.87 452.38
Bom, é isso, é um tópico completamente aleatório. Sintam-se livres para postar os resultados de vocês.
O teste carrega os arquivos na RAM antes de passar o compressor, então HD/SSD não deve afetar o resultado.