Connexion Abonnez-vous

14 algorithmes de compression passés au crible : 4 000 résultats dans un tableau interactif

rm -fr >> all pour ce qui est de la taille finale !

14 algorithmes de compression passés au crible : 4 000 résultats dans un tableau interactif

Le meilleur algorithme de compression n’est pas forcément le plus rapide et vice-versa. Le meilleur choix dépend généralement des usages, mais comment faire ce choix ? Next vous aide avec 14 algorithmes, 10 catégories de données et 3 niveaux de compression. Près de 4 000 résultats vous attendent, avec un classement interactif dont vous êtes le héros !

Le 12 novembre à 11h17

Il y a quelques jours, nous avons testé le nouvel algorithme de compression OpenZL de Meta. Un autre est sorti récemment, Turbosqueeze. Son créneau est la vitesse de traitement : « Turbosqueeze propose des compressions et décompressions très rapides, ce qui le rend idéal pour les charges de travail exigeantes, les fichiers volumineux et les systèmes en temps réel ».

Spoiler sur Turbosqueeze : il est en effet rapide, mais n'est pas systématiquement premier, loin de là. Niveau compression des données, par contre, il est toujours loin de la tête de course. Ses meilleurs résultats sont dans la catégorie CSV avec la vitesse la plus élevée et un niveau de compression semblable à lz4 et lzop.

Nous l’avons intégré à un comparatif plus large, aux côtés d’autres algorithmes, avec de la décompression cette fois-ci (comme certains le demandaient). Pour améliorer notre protocole et dépendre le moins possible du stockage, nous effectuons désormais l’ensemble des tests de compression et décompression dans un ramdisk. Il s’agit pour rappel d’un espace de stockage créé en mémoire vive, bien plus rapide que les HDD et les SSD.

Les algorithmes : OpenZL, Turbosqueeze, zstd, rar, rip, brotli, zopfli…

Nous avons tout d’abord effectué un fichier d’archive avec la commande TAR. Aucune compression ici, mais un mètre étalon. Du côté des algorithmes, OpenZL avec le profil serial qui s’adapte à tous les types de fichiers. Un coup de Turbosqueeze ensuite.

Viennent ensuite des algorithmes plus classiques : zstd, xz (attention, une porte dérobée a été détectée en 2024), gzip, bzip2, 7zip, zip, lz4, rar, brotli, pixz, lzop et zopfli. Lorsque plusieurs niveaux de compression sont disponibles, nous lançons plusieurs tests avec les niveaux 1, 5 et 9.

La quantité de données qui en résulte est relativement importante puisque, pour chaque type de données, nous avons une quarantaine de tests (plus d’une dizaine d'algorithmes avec pour la plupart trois niveaux de compression).

Ci-dessous les tableaux de seulement trois des dix catégories de fichiers testés. Comme toujours, nous vous proposons également l’intégralité des résultats dans une feuille de calcul avec toutes les données exploitables.

Un score final personnalisable selon vos besoins (débit, compression)

Il reste 60% de l'article à découvrir.

Déjà abonné ? Se connecter

Cadenas en colère - Contenu premium

Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.

Accédez en illimité aux articles

Profitez d'un média expert et unique

Intégrez la communauté et prenez part aux débats

Partagez des articles premium à vos contacts

Commentaires (22)

votre avatar
Ce sous-titre :dix:
votre avatar
Un dd me semblerait plus efficace :p
votre avatar
Une fois j'avais fait ça avec un shred. J'ai été étonné que ça arrive au bout de la 1ere passe. Au milieu de la 2eme passe cependant, j'ai fini par perdre le ssh :mdr:
votre avatar
On peut dire que c'est de la compression avec un certain niveau de perte.
votre avatar
J'aurais bien vu un sous-titre alternatif (qui correspond très bien à l'article) du genre :
Y a pas que la taille qui compte !
:D
votre avatar
Gros boulot qui permet d'y voir nettement plus clair ! Merci !
votre avatar
L'algo xstd semble globalement toujours bien placé (avec des niveaux de compression variables).
votre avatar
xstd, c'est le fils illégitime de xz et zstd ?
votre avatar
zstd est globalement bon, même s'il n'offre pas le meilleur taux de compression.

Ceci dit, zstd a une particularité qu'aucun des autres ne possède (à ma connaissance) c'est le système de compression adaptatif.

J'essaie d'expliquer: Imaginez que vous voulez "dumper" un disque avec dd :
dd | compression > fichierdestination

On veut que le fichier de destination soit le plus compressé possible, mais sans perdre de temps.
- Si vous choisissez un taux de compression trop fort, la compression sera plus lente que la lecture du disque. Vous allez perdre du temps.
- Si vous prenez une compression plus faible, vous irez au maximum de la vitesse des disques, mais vous allez sans doute perdre de la place.

Comment choisir le taux de compression optimal ?
Et bien avec zstd il suffit d'ajouter --adapt et zstd va s'adapter aux débits entrants et sortant : Il va faire varier le taux de compression pour avoir la compression maximale sans ralentir les entrées/sorties.
votre avatar
Me concernant, pour l'archivage à long terme (donc pour des fichiers qui ne seront pas décompressés souvent), je préfère 7-Zip ou zpaq avec des paramètres modifiés.

J'utilise zstd sous Linux pour la compression transparente de tout le système de fichier (en btrfs). La place gagné est phénoménale et zstd est tellement rapide que ça ne ralentit pas le système.
votre avatar
Question : pourquoi les algorithmes de compression ont quasiment tous des noms tordus ? 🤔
votre avatar
Par ce qu'ils sont tous plus ou moins dérivés des algorithmes LZ77 et LZ78 qui tirent eux-même leur nom des noms de famille de leurs inventeurs.
votre avatar
Merci pour ce travail.

J'aurais aimé y voir aussi zpaq (en mode -m4), parce que ce compresseur a des particularités très intéressantes (comme une phase de déduplication avant la compression) qui sur de gros ensembles de données (>10 Go) donne bien souvent des résultats que même 7zip en mode -mx=9 ne pourra pas atteindre. (Je parle de plusieurs giga-octets de différence avec 7zip en mode 9 sur certains jeux de données).

À noter aussi qu'il est possible d'augmenter considérablement les performances de compression de 7-Zip avec des options dans la ligne de commande qui ne sont pas présente dans la documentation utilisateur, mais dans la doc technique.
Au prix d'une consommation mémoire plus élevée, on obtient de bien meilleurs taux de compression qu'avec -mx=9
votre avatar
Si on reprend le jeu de données Silesia de l'autre article (petit jeu de données):
- non compressé : 211 938 580 octets
- 7-Zip -mx=9 : 48 688 231 octets.
- 7-Zip avec options modifiées : 47 896 854
- zpaq -m4 : 43 372 826
(on oublie le zpaq -m5 qui a des temps de compression/décompression bien trop importants pour être utilisable.)

La différence peut sembler faible, mais elle est amplifiée par la taille des données à compresser, en particulier quand votre jeu de données dépasse la taille de la "fenêtre" de compression de 7-Zip -mx=9.
C'est à dire que dès que vos données se comptent en giga-octets, l'impact sur la compression sera beaucoup plus important.
votre avatar
Ah et si vous êtes développeur, allez jeter un coup d'oeil sur la doc technique de zpaq : Son mode de fonctionnement est vraiment 🤯
votre avatar
Je peux faire une mise à jour sans problème (j’ai meme lancé un appel à la fin du test :D) donc j’attend un peu les retours et je referais les tests sur de nouveaux algos, n’hésitez pas à proposer :)
votre avatar
super 👍‍

Je me souviens d'autres jeux de données un peu plus volumineux qui pourraient être intéressant, par exemple celui du Hutter Prize (http://prize.hutter1.net/), justement un prix décerné aux meilleurs compresseurs. Ce jeu fait 1 Go. Et il est intéressant car il contient à la fois des données structurées et du texte. (C'est un export de Wikipedia).


Concernant mes bidouille avec 7-Zip pour compresser plus fort qu'avec -mx=9, j'ai documenté ça là : https://sebsauvage.net/links/?s0zmfA
Inconvénient : c'est plus long à compresser et ça consomme beaucoup plus de RAM (10 Go à la compression), mais ça compresse bien mieux. (À la décompression, il faut 1 Go de RAM, ce qui n'est pas excessif pour les machines actuelles).
votre avatar
Super !
votre avatar
Sacré boulot, bravo et merci !
votre avatar
Un article par des geeks pour des geeks. Je vais aller zieuter ça ce week-end par curiosité :prof:
votre avatar
Je propose l'algorithme de Pied Piper, une startup de la Silicon Valley ;)

J'étais déçu de ne pas trouver de référence, alors met les pieds dans le plat !
votre avatar
Pour du tout venant et de la rapidité, 7zip me paraît être le mieux placé

14 algorithmes de compression passés au crible : 4 000 résultats dans un tableau interactif

  • Les algorithmes : OpenZL, Turbosqueeze, zstd, rar, rip, brotli, zopfli…

  • Un score final personnalisable selon vos besoins (débit, compression)

  • Feuille de calcul à partager ou fichier ODS à télécharger, au choix

  • Précisions sur le protocole

  • Des graphiques sur le niveau de compression

Fermer