LZ4 1.10: une bibliotheque de compression au bord de la bande memoire

Résumé

LZ4 est une bibliotheque libre de compression sans perte, faite pour les chemins ou les donnees ne peuvent pas attendre: plus de 500 MB par seconde et par coeur a la compression, plusieurs GB par seconde et par coeur a la decompression, ce qui bute d ordinaire sur la bande memoire. Le taux est sacrifie pour une latence assez basse pour entrer dans un flux en direct, et la version 1.10.0 fait du multithread une fonction prise en charge.

Recommander
Nom
LZ4
Version
1.10
Tarif
Gratuit
Open source
Open source
Système
WindowsmacOSLinux
Mis à jour
2026-10-06 15:42

Quand la vitesse est tout

Une base qui ecrit son journal, une file de messages qui deplace des trames, un moteur de jeu qui tire ses ressources du disque — sur ces chemins, les donnees ne peuvent pas s asseoir et attendre qu un compresseur reflechisse. Cette bibliotheque a ete construite pour ce moment precis. C est une bibliotheque libre de compression sans perte qui compresse a plus de 500 MB par seconde sur un seul coeur et decompresse a plusieurs GB par seconde et par coeur, ce qui veut dire en pratique que la limite est la bande memoire et non l algorithme.

L echange est annonce clairement: le taux est abandonne, et ce qui revient est une latence assez basse pour tenir dans un flux en direct. Tout le dessin est la, et cela explique pourquoi la bibliotheque apparait a des endroits ou personne ne compte les disques economises.

la page du projet de la bibliotheque de compression

Rapide, avec une reserve gardee

Il reste des jours ou le taux compte plus que l horloge. Une variante a forte compression depense plus de temps de calcul pour un meilleur resultat, et la compression par dictionnaire existe a la fois dans l interface et en ligne de commande; sur les petits fichiers, ou l historique tient dans un seul tampon et reste court, c est le dictionnaire qui rend les chiffres presentables.

La version 1.10.0, sous titree edition multi coeurs, fait du multithread une vraie fonction: il est actif par defaut sous Windows, le nombre de fils se regle par une variable d environnement, et l interface du dictionnaire passe du stade d essai a celui d interface stable. La specification du format est publique, les formats de trame et de bloc sont documentes en detail, et des liaisons existent pour la plupart des langages vers lesquels on se tournerait.

Le composant invisible

La licence est une BSD a deux clauses, l integration dans un produit commercial ne demande donc aucun travail de licence. Cette liberte explique pourquoi elle a cesse depuis longtemps d etre un outil de compression: des bases de donnees, des systemes de fichiers, des modules du noyau et des formats d archive l embarquent directement, et le paquet de la bibliotheque est une figure familiere dans les depots des distributions. Pour un developpeur, elle tient plus du socle que du logiciel: on appelle une fonction, l utilisateur n apprend jamais le nom, et la seule chose qu on remarque est que cela va vite.

Ce qu elle n est pas merite la meme clarte. Elle ne produit pas le plus petit fichier; quand il s agit d economiser de la bande ou du disque, un algorithme plus lourd gagne et doit etre employe. Ce n est pas un format de sauvegarde, pas un gestionnaire d archives, et pas quelque chose avec quoi une personne interagit. Son travail est de disparaitre dans le programme de quelqu un d autre.

Lire une mesure honnetement

Ces chiffres invitent au mauvais usage, il faut donc dire ce qu ils signifient. Un debit mesure sur un coeur decrit l algorithme, pas votre application: les vrais chemins ajoutent des copies, des verrous, des allers retours reseau et de la serialisation, et des que les donnees traversent une connexion, l avance du compresseur se reduit. On evalue honnetement en mesurant le chemin qu on fait vraiment, et on choisit honnetement en demandant d abord si le goulot est le temps ou la place.

Comment elle se choisit dans un vrai projet

La decision est rarement une competition entre bibliotheques. Elle arrive d ordinaire comme une phrase dans une discussion de conception: le journal n a pas besoin d etre petit, il a besoin d etre ecrit avant que la transaction suivante soit validee. Des que l exigence est celle la, le debat est clos, car les candidats qui produisent les plus petits fichiers sont justement ceux qui n ont pas le temps.

L integration est a l avenant modeste: un tampon entre, un tampon sort, et au milieu un format de trame que d autres outils comprennent deja — un avantage discret d une specification publique, puisqu un fichier ecrit aujourd hui se lit par un programme ecrit dans un autre langage. Quand quelque chose se passe mal, l echec est en general une taille ou une version qui ne correspond pas, et non une enigme; a trois heures du matin cela vaut beaucoup.

Ou se situe vraiment le plafond

Cela vaut la repetition: le plafond est la machine, pas l algorithme. Le stockage et la memoire sont devenus assez rapides pour qu un compresseur de ce rythme passe une bonne part de son temps a attendre des octets; pousser plus loin rapporterait donc moins qu il n y parait, et la marge restante est dans le programme autour, pas dans cette bibliotheque.

Cela explique aussi la forme du projet avec le temps. Le travail interessant est passe du coeur plus rapide a l usage correct plus facile: multithread, interface de dictionnaire stable, formats decrits assez finement pour qu une seconde mise en oeuvre existe. Pour un socle, ennuyeux et fiable sont le meme compliment.

Un dernier point que pose toujours qui envisage l adoption: si l outil deja en place lit le meme format, le principal du travail sera la mesure autour plutot que la compatibilite des fichiers. S il ne le lit pas, ce constat est la premiere porte, et la vitesse de compression devient la seconde question.

La compression a toujours echange de la vitesse contre du taux, et cette bibliotheque pousse la balance entierement du cote de la vitesse, puis defend cette place avec une licence permissive et plus de dix ans d entretien regulier. Pour economiser de la bande ou du disque, ce n est pas la meilleure reponse; pour economiser du temps, c est presque toujours le premier candidat.

LZ4Téléchargement
Systèmes pris en charge : Windows macOS Linux