LZ4 est un algorithme de compression sans perte, offrant une vitesse de compression > 500 Mo/s par cœur, évolutif avec un processeur multicœur. Il dispose d'un décodeur extrêmement rapide, avec une vitesse de plusieurs Go/s par cœur, atteignant généralement les limites de vitesse de la RAM sur les systèmes multicœurs.
La vitesse peut être réglée de manière dynamique, en sélectionnant un facteur « d'accélération » qui échange le taux de compression contre une vitesse plus rapide. À l'autre extrémité, un dérivé à haute compression, LZ4_HC, est également fourni, échangeant du temps CPU contre un taux de compression amélioré. Toutes les versions disposent de la même vitesse de décompression.
LZ4 est également compatible avec la compression de dictionnaire, tant au niveau API que CLI. Il peut ingérer n'importe quel fichier d'entrée sous forme de dictionnaire, bien que seuls les 64 Ko finaux soient utilisés. Cette fonctionnalité peut être combinée avec le Zstandard Dictionary Builder, afin d'améliorer considérablement les performances de compression sur les petits fichiers.
La bibliothèque LZ4 est fournie sous forme de logiciel open source utilisant la licence BSD 2-Clause.
Bifurquer | Statut |
---|---|
développeur |
Le benchmark utilise lzbench, de @inikep compilé avec GCC v8.2.0 sur Linux 64 bits (Ubuntu 4.18.0-17). Le système de référence utilise un processeur Core i7-9700K à 4,9 GHz (avec turbo boost). Benchmark évalue la compression du Silesia Corpus de référence en mode monothread.
Compresseur | Rapport | Compression | Décompression |
---|---|---|---|
mémoire | 1.000 | 13 700 Mo/s | 13 700 Mo/s |
LZ4 par défaut (v1.9.0) | 2.101 | 780 Mo/s | 4970 Mo/s |
LZO2.09 | 2.108 | 670 Mo/s | 860 Mo/s |
QuickLZ 1.5.0 | 2.238 | 575 Mo/s | 780 Mo/s |
Snappy 1.1.4 | 2.091 | 565 Mo/s | 1950 Mo/s |
Zstandard 1.4.0 -1 | 2.883 | 515 Mo/s | 1380 Mo/s |
LZFv3.6 | 2.073 | 415 Mo/s | 910 Mo/s |
zlib dégonfler 1.2.11 -1 | 2.730 | 100 Mo/s | 415 Mo/s |
LZ4 HC-9 (v1.9.0) | 2.721 | 41 Mo/s | 4900 Mo/s |
zlib dégonfler 1.2.11 -6 | 3.099 | 36 Mo/s | 445 Mo/s |
LZ4 est également compatible et optimisé pour le mode x32 ( -mx32
), pour lequel il offre des performances de vitesse supplémentaires.
make
make install # this command may require root permissions
Makefile
de LZ4 prend en charge les conventions Makefile standard, y compris les installations par étapes, la redirection ou la redéfinition des commandes. Il est compatible avec les builds parallèles ( -j#
).
Vous pouvez télécharger et installer LZ4 à l'aide du gestionnaire de dépendances vcpkg :
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg.exe install lz4
Le port LZ4 dans vcpkg est tenu à jour par les membres de l'équipe Microsoft et les contributeurs de la communauté. Si la version est obsolète, veuillez créer un problème ou une pull request sur le référentiel vcpkg.
Le format de compression du bloc LZ4 brut est détaillé dans lz4_Block_format.
Les fichiers ou flux de données arbitrairement longs sont compressés à l'aide de plusieurs blocs, pour les besoins de streaming. Ces blocs sont organisés dans un cadre, défini dans lz4_Frame_format. Les versions interopérables de LZ4 doivent également respecter le format de trame.
Au-delà de la source de référence C, de nombreux contributeurs ont créé des versions de lz4 dans plusieurs langages (Java, C#, Python, Perl, Ruby, etc.). Une liste des ports sources connus est conservée sur la page d'accueil de LZ4.
La plupart des distributions sont fournies avec un gestionnaire de paquets qui permet une installation facile de la bibliothèque liblz4
et de l'interface de ligne de commande lz4
.