- Entwickelt, um Engpässe bei der Leseleistung in der Content-Bereitstellung und in Embedded-Systemen zu beseitigen
- Ausgelegt auf eine Struktur vom Typ einmal komprimieren, vielfach dekomprimieren (Read-Many), bei der der Encoder die Komplexität übernimmt und der Decoder auf maximalen Durchsatz optimiert ist
- Gegenüber LZ4 über 40 % höhere Dekodiergeschwindigkeit (Apple Silicon), über 20 % schneller (Google Axion, ein ARM-Chip für die Cloud) und auch auf x86_64 über 5 % schneller
- Offiziell in den lzbench-Master-Branch integriert und damit nun unabhängig über einen Standard-Benchmark verifizierbar
- Auf asymmetrische Effizienz (Asymmetric Efficiency) ausgelegte Architektur, die den Kompromiss zwischen der symmetrischen Geschwindigkeit (LZ4) und der Komprimierungseffizienz (Zstd) bestehender Codecs auflöst
- Der Encoder erzeugt einen Bitstream, der auf die CPU-Architektur (insbesondere ARMv8) zugeschnitten ist, um Instruction-Pipeline und Branch-Prediction zu optimieren
- Der Decoder ist vereinfacht und auf maximalen Laufzeitdurchsatz ausgelegt
- Benchmarks:
- Auf einem Apple M2 erreicht ZXC gegenüber LZ4 bis zu 1,9-fach schnellere Dekodierung und gegenüber Zstd 2,7-fach höheren Durchsatz
- Auch auf Google Axion (ARM Neoverse V2) bleibt die 1,6- bis 2,5-fach schnellere Dekomprimierung erhalten
- In x86_64-Umgebungen (AMD EPYC) werden ebenfalls bis zu 2,2-fach schnellere Dekodierleistungen erzielt
- Besteht aus 5 Komprimierungsstufen
- Level 1–2 (schnell): für Echtzeit-Assets wie Spiele/UI, etwa 40 % schnelleres Laden als LZ4
- Level 3–4 (ausgewogen): Balance zwischen Geschwindigkeit und Ratio
- Level 5 (kompakt): für Firmware und Embedded, schneller als Zstd und mit höherer Komprimierungsrate als LZ4
- API- und CLI-Unterstützung
- CLI: Befehle für manuelle Asset-Komprimierung und Benchmarks (
zxc -z, zxc -d, zxc -b)
- API: vollständig thread-sichere (stateless) Struktur mit bindungsfreundlicher API
- Streaming-API: unterstützt parallele Verarbeitung großer Dateien, einschließlich automatischer Thread-Erkennung und Checksum-Prüfung
- Als Sans-IO-Architektur entworfen, sodass sprachspezifische I/O-Treiber direkt implementiert werden können (auf Basis von
zxc_sans_io.h)
- Qualität und Stabilität sichergestellt
- Kontinuierliches Fuzzing (ClusterFuzzLite)
- Statische Analyse (CPPChecker, Clang)
- Dynamische Verifikation (Valgrind, ASan/UBSan)
- Sichere API-Struktur, die bei allen Operationen eine explizite Angabe der Pufferkapazität verlangt
- BSD 3-Clause License
Noch keine Kommentare.