LZ4 ist ein verlustfreier Komprimierungsalgorithmus, der eine Komprimierungsgeschwindigkeit von > 500 MB/s pro Kern bietet und mit Mehrkern-CPUs skalierbar ist. Es verfügt über einen extrem schnellen Decoder mit einer Geschwindigkeit von mehreren GB/s pro Kern, der bei Multi-Core-Systemen typischerweise die RAM-Geschwindigkeitsgrenzen erreicht.
Die Geschwindigkeit kann dynamisch angepasst werden, indem ein „Beschleunigungsfaktor“ ausgewählt wird, der das Komprimierungsverhältnis gegen eine höhere Geschwindigkeit eintauscht. Auf der anderen Seite wird auch ein Derivat mit hoher Komprimierung, LZ4_HC, bereitgestellt, das CPU-Zeit gegen ein verbessertes Komprimierungsverhältnis eintauscht. Alle Versionen verfügen über die gleiche Dekompressionsgeschwindigkeit.
LZ4 ist auch mit der Wörterbuchkomprimierung kompatibel, sowohl auf API- als auch auf CLI-Ebene. Es kann jede Eingabedatei als Wörterbuch aufnehmen, es werden jedoch nur die letzten 64 KB verwendet. Diese Funktion kann mit dem Zstandard Dictionary Builder kombiniert werden, um die Komprimierungsleistung bei kleinen Dateien drastisch zu verbessern.
Die LZ4-Bibliothek wird als Open-Source-Software unter Verwendung der BSD 2-Clause-Lizenz bereitgestellt.
Zweig | Status |
---|---|
Entwickler |
Der Benchmark verwendet lzbench von @inikep, kompiliert mit GCC v8.2.0 unter Linux 64-Bit (Ubuntu 4.18.0-17). Das Referenzsystem verwendet eine Core i7-9700K-CPU mit 4,9 GHz (mit Turbo-Boost). Benchmark bewertet die Komprimierung des Referenz-Silesia Corpus im Single-Thread-Modus.
Kompressor | Verhältnis | Kompression | Dekompression |
---|---|---|---|
memcpy | 1.000 | 13700 MB/s | 13700 MB/s |
LZ4-Standard (v1.9.0) | 2.101 | 780 MB/s | 4970 MB/s |
LZO 2.09 | 2.108 | 670 MB/s | 860 MB/s |
QuickLZ 1.5.0 | 2.238 | 575 MB/s | 780 MB/s |
Bissig 1.1.4 | 2.091 | 565 MB/s | 1950 MB/s |
Zstandard 1.4.0 -1 | 2.883 | 515 MB/s | 1380 MB/s |
LZF v3.6 | 2.073 | 415 MB/s | 910 MB/s |
zlib deflate 1.2.11 -1 | 2.730 | 100 MB/s | 415 MB/s |
LZ4 HC -9 (v1.9.0) | 2.721 | 41 MB/s | 4900 MB/s |
zlib deflate 1.2.11 -6 | 3.099 | 36 MB/s | 445 MB/s |
LZ4 ist auch für den x32-Modus ( -mx32
) kompatibel und optimiert, für den es zusätzliche Geschwindigkeitsleistung bietet.
make
make install # this command may require root permissions
Makefile
von LZ4 unterstützt Standard-Makefile-Konventionen, einschließlich gestaffelter Installationen, Umleitung oder Befehlsneudefinition. Es ist mit parallelen Builds ( -j#
) kompatibel.
Sie können LZ4 mit dem vcpkg-Abhängigkeitsmanager herunterladen und installieren:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg.exe install lz4
Der LZ4-Port in vcpkg wird von Microsoft-Teammitgliedern und Community-Mitwirkenden auf dem neuesten Stand gehalten. Wenn die Version veraltet ist, erstellen Sie bitte einen Issue oder Pull Request im vcpkg-Repository.
Das rohe LZ4-Blockkomprimierungsformat wird in lz4_Block_format detailliert beschrieben.
Beliebig lange Dateien oder Datenströme werden für Streaming-Anforderungen mithilfe mehrerer Blöcke komprimiert. Diese Blöcke sind in einem Frame organisiert, der im lz4_Frame_format definiert ist. Interoperable Versionen von LZ4 müssen auch das Frame-Format berücksichtigen.
Über die C-Referenzquelle hinaus haben viele Mitwirkende Versionen von lz4 in mehreren Sprachen (Java, C#, Python, Perl, Ruby usw.) erstellt. Eine Liste bekannter Quellports wird auf der LZ4-Homepage geführt.
Die meisten Distributionen sind mit einem Paketmanager ausgestattet, der eine einfache Installation sowohl der liblz4
-Bibliothek als auch der lz4
Befehlszeilenschnittstelle ermöglicht.