Dank Multi-Threading: Neue LZ4-Version komprimiert um ein Vielfaches schneller

Bereits konzeptuell ist der Kompressionsalgorithmus LZ4(öffnet im neuen Fenster) auf hohe Geschwindigkeit ausgelegt. Er wird unter anderem von Dateisystem und Datenbanken eingesetzt, auch der Linux-Kernel kann damit verkleinert werden, um kürzere Ladezeiten zu erreichen. Die kürzlich veröffentlichte Version 1.10(öffnet im neuen Fenster) macht hier noch einmal einen großen Sprung: Sie kann mehrere Threads für Kompression und Dekompression nutzen, was insbesondere bei der aufwendigeren Kompression eine Vervielfachung der Leistung bedeutet.
Die Entwickler geben einige Beispiele an, bei denen verschiedene Achtkernprozessoren zwischen 5,4- und 8-mal schneller packten. Bei der Dekompression sind die Geschwindigkeitsgewinne geringer, da nach Angaben der Entwickler hier die SSD zum Flaschenhals wird. Zumindest lassen sich aber Ein- und Ausgabe sowie die Dekompression überlagern. Für eine 5-GByte-Textdatei habe das einen Leistungsgewinn von über 60 Prozent gebracht. Hier fehlen allerdings Angaben zum Testsystem.
Bessere Kompression für kleine Dateien
Zudem gilt die mit der Vorgängerversion 1.9.4 eingeführte Kompression und Dekompression mit vorgegebenem Wörterbuch (als dictionary compression bezeichnet) nicht länger als experimentell. Anwender können sich damit auf stabile Funktion und langfristige Unterstützung verlassen.
Als sogenannte Wörterbuchkompression(öffnet im neuen Fenster) verwendet LZ4 einen Satz von Zeichenfolgen, das Wörterbuch, die jeweils durch kürzere Symbole ersetzt werden. Normalerweise wird dieses Wörterbuch bei der Kompression aufgebaut, es ist auch für die Dekompression erforderlich. Besonders bei kleinen Dateien kann aber der klassische Ansatz ineffizient sein.
Im als "dictionary compression" bezeichneten Modus hingegen wird ein Wörterbuch anhand mehrerer Beispieldateien erzeugt, wodurch dateiübergreifende Muster erkannt werden können. Es wird anschließend für alle zu komprimierenden Dateien verwendet. Das beschleunigt nicht nur die Kompression, die komprimierten Dateien werden zudem kleiner, da sie kein eigenes Wörterbuch mehr enthalten.
Unterstützung für weitere Architekturen
Mit Version 1.10 haben die Entwickler LZ4 zudem auf bislang nicht offiziell unterstützten Plattformen verifiziert: Neben RISC-V werden Loongsons Loongarch, m68k, MIPS und Sparc nun offiziell unterstützt. Diese Plattformen wurden zudem in die Continuous Integration (CI) aufgenommen, um neuen Code künftig automatisch zu testen.
Die letzte große Neuerung stellt ein zusätzlicher Kompressionsmodus dar: Neben schneller Kompression (Level 1) und hohem Kompressionsgrad (jetzt Level 3) wurde ein zusätzlicher Mittelweg - Level 2 - eingeführt.



