05/05/2026

Zxc, une bibliothèque de compression 2× plus rapide que LZ4

Par admin

Zxc, une bibliothèque de compression 2× plus rapide que LZ4

Deux fois plus rapide que LZ4 en décompression ?? Ah bon c’est possible ? Évidemment, quand Bertrand Lebonnois a publié
zxc sur GitHub
, et m’a envoyé un email pour me prévenir, j’ai été jeter un œil, surtout aux benchmarks.

Eh bien après analyse, c’est bien réel !

La philosophie de zxc est assez tranchée vous allez voir. Il s’agit d’une lib WORM (Write-Once, Read-Many) qui permet de compresser une fois lentement, à la compilation ou en CI, et ensuite de décompresser comme vous voulez des millions de fois sur les appareils de vos utilisateurs à la vitesse de l’éclair. Avec zxc, on accepte que la compression soit lente et complexe (pour trouver le bitstream parfait), afin que la décompression soit méga rapide et simple pour le processeur. C’est aussi simple que ça.

Le revers de la médaille, c’est que si vous voulez de la compression à la volée ou du streaming temps réel, ce n’est clairement pas adapté. Par contre, si vous produisez des assets une fois et qu’ensuite, vous les servez des milliers de fois, alors vous êtes exactement dans la cible.

En pratique, sur macOS M2 avec un corpus de test standard, zxc dépasse les ~12 000 Mo/s en décompression, contre ~5 600 Mo/s pour LZ4 --fast dans le même test. L’écart reste également hyper solide ailleurs : 1,8× sur ARM serveur (Google Axion) et 2× sur x86_64 (AMD).

Et l’API proposée par zxc ne s’arrête pas à un compresseur basique. En effet, un mode "seekable" permet d’accéder à n’importe quelle position d’une archive sans scanner le fichier depuis le début. Par exemple, vous packagez vos
assets de jeux vidéo
dans une seule archive zxc, et quand le joueur charge une texture précise, vous lisez directement le bon bloc, et pas tout le fichier.

Côté installation, c’est simple : brew install zxc sur macOS, apt install zxc sous Debian ou Ubuntu, pip install zxc-compress, npm install zxc, cargo add zxc-compress ou vcpkg install zxc sous Windows.

Des bindings officiels existent aussi pour Rust, Python, Node.js, Go et WASM et la communauté a aussi ajouté Nim et Free Pascal de son côté. Et comme c’est codé en C, y’a aucune dépendance lourde.

Sache que pour assoir la crédibilité du projet, zxc a été intégré dans lzbench et TurboBench, les deux outils de référence permettant de comparer les algos de compression. Et le paquet est déjà dispo dans les versions testing et unstable de Debian, ce qui veut dire que les mainteneurs ont validé le truc !

Bref, si vous gérez de la compression d’assets ou de firmwares dans votre pipeline, ça vaut le coup d’y jeter un oeil.

Merci à Bertrand pour l’info et chapeau pour le boulot !

Source : korben.info