LZ4 é um algoritmo de compactação sem perdas, fornecendo velocidade de compactação> 500 MB/s por núcleo, escalável com CPU multi-core. Ele apresenta um decodificador extremamente rápido, com velocidade de vários GB/s por núcleo, normalmente atingindo limites de velocidade de RAM em sistemas multi-core.
A velocidade pode ser ajustada dinamicamente, selecionando um fator de “aceleração” que troca a taxa de compressão por uma velocidade mais rápida. Por outro lado, um derivado de alta compressão, LZ4_HC, também é fornecido, trocando o tempo de CPU por uma taxa de compressão melhorada. Todas as versões apresentam a mesma velocidade de descompressão.
LZ4 também é compatível com compactação de dicionário, tanto em nível API quanto CLI. Ele pode ingerir qualquer arquivo de entrada como dicionário, embora apenas os 64 KB finais sejam usados. Esse recurso pode ser combinado com o Zstandard Dictionary Builder, para melhorar drasticamente o desempenho da compactação em arquivos pequenos.
A biblioteca LZ4 é fornecida como software de código aberto usando licença BSD 2-Clause.
Filial | Status |
---|---|
desenvolvedor |
O benchmark usa lzbench, do @inikep compilado com GCC v8.2.0 no Linux de 64 bits (Ubuntu 4.18.0-17). O sistema de referência usa uma CPU Core i7-9700K a 4,9 GHz (com turbo boost). O Benchmark avalia a compactação da referência Silesia Corpus no modo single-thread.
Compressor | Razão | Compressão | Descompressão |
---|---|---|---|
memcpy | 1.000 | 13.700MB/s | 13.700MB/s |
Padrão LZ4 (v1.9.0) | 2.101 | 780MB/s | 4.970MB/s |
LZO 2.09 | 2.108 | 670MB/s | 860MB/s |
QuickLZ 1.5.0 | 2.238 | 575MB/s | 780MB/s |
Rápido 1.1.4 | 2.091 | 565MB/s | 1950MB/s |
Zpadrão 1.4.0 -1 | 2.883 | 515MB/s | 1380MB/s |
LZF v3.6 | 2.073 | 415MB/s | 910MB/s |
zlib deflacionar 1.2.11 -1 | 2.730 | 100MB/s | 415MB/s |
LZ4HC-9 (v1.9.0) | 2.721 | 41MB/s | 4900MB/s |
zlib deflacionar 1.2.11 -6 | 3.099 | 36MB/s | 445MB/s |
LZ4 também é compatível e otimizado para o modo x32 ( -mx32
), para o qual fornece desempenho de velocidade adicional.
make
make install # this command may require root permissions
Makefile
do LZ4 suporta convenções padrão do Makefile, incluindo instalações preparadas, redirecionamento ou redefinição de comando. É compatível com compilações paralelas ( -j#
).
Você pode baixar e instalar o LZ4 usando o gerenciador de dependência vcpkg:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg.exe install lz4
A porta LZ4 no vcpkg é mantida atualizada pelos membros da equipe da Microsoft e colaboradores da comunidade. Se a versão estiver desatualizada, crie um problema ou solicitação pull no repositório vcpkg.
O formato bruto de compactação do bloco LZ4 é detalhado em lz4_Block_format.
Arquivos ou fluxos de dados arbitrariamente longos são compactados usando vários blocos, para atender aos requisitos de streaming. Esses blocos são organizados em um quadro, definido em lz4_Frame_format. As versões interoperáveis do LZ4 também devem respeitar o formato do quadro.
Além da fonte de referência C, muitos colaboradores criaram versões do lz4 em múltiplas linguagens (Java, C#, Python, Perl, Ruby, etc.). Uma lista de portas de origem conhecidas é mantida na página inicial do LZ4.
A maioria das distribuições vem com um gerenciador de pacotes que permite fácil instalação da biblioteca liblz4
e da interface de linha de comando lz4
.