Neue LZ4-Version komprimiert dank Multithreading flotter
Das Packprogramm LZ4 nutzt in seiner neuen Version mehrere Prozessorkerne, bietet einen neuen Kompressionsgrad und unterstützt Dictionary Compression.​
LZ4 bezeichnet sowohl einen besonders schnellen Kompressionsalgorithmus als auch eine entsprechende Referenzimplementierung. Letztere besteht aus der Bibliothek Liblz4 und dem Kommandozeilenprogramm "lz4". Das komplette System liegt ab sofort in der Version v1.10.0 vor, deren Codename "Multicores Edition" bereits auf eine der größten Neuerungen hinweist.
Multithreading
So verteilt LZ4 ab sofort seine Arbeit auf mehrere Threads. Auf Prozessoren mit vielen Kernen führt das zu einem deutlichen Geschwindigkeitsschub. Besonders spürbar ist der Performance-Sprung bei sehr hohen Kompressionsgraden, die Dateien mit besonders viel Gehirnschmalz zusammenschrumpfen (High-Compression-Modi). Den Benchmark-Ergebnissen der Entwickler zufolge arbeitet die neue LZ4-Version bis zu achtmal flotter als der Vorgänger. Die größten Geschwindigkeitszuwächse verzeichnete das Team auf einem Testsystem mit AMD Ryzen 7 7840HS-Prozessor und Windows 11.
Darüber hinaus überlappen sich I/O-Operationen und Dekomprimierungsprozesse. Zusammen mit dieser Optimierung brauchte LZ4 für das Entpacken einer 5 GByte großen Textdatei auf einem nicht näher beschriebenen Testsystem nur noch drei statt fünf Sekunden. Die Geschwindigkeitssteigerungen machen dabei nicht nur den High-Compression-Modi Beine, sondern sind auch beim Einsatz von schnellen Speichersystemen, wie etwa NVMe-Datenträgern, nützlich.
Apropos Kompressionsgrade: LZ4 bietet einen neuen Compression Level 2. In ihm arbeitet das Packprogramm etwas langsamer als im standardmäßig verwendeten Level 1 (Fast Compression), komprimiert dafür aber stärker. Die erzeugten Dateien sind allerdings nicht so klein wie im höheren Level 3. Die Entwickler empfehlen den Level 2 folgerichtig immer dann, wenn man kleinere Archive als im Level 1 benötigt, auf diese aber nicht so lange warten kann, wie beim Einsatz von Level 3.
Dictionary Compression
Bereits die Vorversion unterstützte eine sogenannte Dictionary Compression. Bei diesem Kompressionsverfahren ersetzt das Packprogramm wiederkehrende Dateiinhalte durch ein kürzeres Symbol. Die entsprechenden Zuordnungen merkt sich das Tool in einer als Dictionary bezeichneten Datei. Teilen sich mehrere Dateien mit ähnlichem Inhalt ein Dictionary, kann dies den Speicherbedarf der komprimierten Exemplare noch einmal drastisch senken. Der Einsatz eines Dictionarys lohnt daher vor allem bei vielen kleineren Dateien, die sich jeweils selbst nicht sehr gut komprimieren lassen.
Während die Dictionary Compression in der Vorversion noch als experimentell galt, unterstützt LZ4 v1.10.0 das Verfahren jetzt offiziell. Insbesondere Programmierer können Dictionaries endlich gefahrlos in ihren Anwendungen nutzen. Die Bibliothek Liblz4 bietet dazu einige neue Funktionen. So entpackt etwa "LZ4F_decompress_usingDict()" mehrere Datenblöcke (in Form eines sogenannten LZ4 Frames) mit einem Dictionary. LZ4 kann zudem mit bestehenden Dictionaries arbeiten, die der Dictionary Builder des Kompressionswerkzeugs Zstd erstellt hat.
Abschließend unterstützt LZ4 die Prozessorarchitekturen loongArch, RISC-V, m68k, MIPS und Sparc, zudem haben die Entwickler noch leicht am Build-System geschraubt. Sämtliche Änderungen fasst die offizielle Ankündigung zusammen.
(vbr)