Lempel – Ziv – Oberhumer - Lempel–Ziv–Oberhumer
Desenvolvedor (s) | Markus FXJ Oberhumer |
---|---|
lançamento inicial | 20 de maio de 1996 |
Versão estável | 2.10 / 1º de março de 2017
|
Sistema operacional | Plataforma cruzada |
Tipo | compressão de dados |
Licença | GPLv2 ou comercial |
Local na rede Internet | www |
Lempel – Ziv – Oberhumer ( LZO ) é um algoritmo de compressão de dados sem perdas que se concentra na velocidade de descompressão.
Projeto
A implementação original "lzop", lançada em 1996, foi desenvolvida por Markus Franz Xaver Johannes Oberhumer, com base em algoritmos anteriores de Abraham Lempel e Jacob Ziv . A biblioteca LZO implementa uma série de algoritmos com as seguintes características:
- maior velocidade de compressão em comparação com a compressão DEFLATE
- descompressão muito rápida
- requer um buffer adicional durante a compressão (de tamanho 8 kB ou 64 kB, dependendo do nível de compressão)
- não requer memória adicional para descompressão além dos buffers de origem e destino
- permite ao usuário ajustar o equilíbrio entre a taxa de compressão e a velocidade de compressão, sem afetar a velocidade de descompressão
LZO suporta compressão sobreposta e descompressão no local. Como um algoritmo de compressão de bloco, ele comprime e descomprime blocos de dados. O tamanho do bloco deve ser o mesmo para compressão e descompressão. LZO compacta um bloco de dados em correspondências (um dicionário deslizante) e executa literais não correspondentes para produzir bons resultados em dados altamente redundantes e lida de forma aceitável com dados não compactáveis, expandindo apenas os dados incompressíveis em um máximo de 1/64 do tamanho original quando medido sobre um tamanho de bloco de pelo menos 1 kB.
Implementações
A implementação de referência foi escrita em ANSI C e foi disponibilizada como software livre sob a GNU General Public License . Os direitos autorais do código pertencem a Markus FXJ Oberhumer. Foi publicado originalmente em 1996. Oberhumer também escreveu um frontend de linha de comando chamado lzop .
Versões do LZO estão disponíveis para as linguagens Perl , Python e Java . Várias implementações LZO são relatadas para funcionar em Win32 , AIX , ConvexOS, IRIX , Mac OS , Palm OS , PlayStation , Nintendo 64 , Wii , Solaris , SunOS , TOS (Atari ST), Linux e VxWorks .
O kernel Linux usa sua implementação LZO em alguns de seus recursos:
- O btrfs usa LZO como um método de compactação possível para compactação do sistema de arquivos .
- initrd e initramfs usam LZO como um método de compactação possível para compactação inicial da unidade RAM .
- O SquashFS usa LZO como um método de compactação possível para compactação do sistema de arquivos .
-
zram usa LZO com codificação run-length chamada de
LZO-RLE
método de compactação padrão para compactação de unidade de RAM . - zswap usa LZO como método de compressão padrão para compressão de memória virtual
Referências
links externos
- oberhumer.com: biblioteca de compressão de dados em tempo real LZO
- LZO / LZOP Fanpage na Wayback Machine (arquivado em 25 de junho de 2012)
- Arnaud Bouche (2008). "LZO fast compress / descompactar: implementação em código de máquina 80386 para Delphi" .
- lzo-java no GitHub - implementação de Java puro do algoritmo de compressão liblzo2 LZO
- Formato de fluxo LZO conforme entendido pelo descompressor LZO do Linux