LZMA

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

LZMA, pour Lempel-Ziv-Markov chain-Algorithm, est un algorithme de compression de données sans perte en développement jusqu'à 2001 et utilisé dans le format 7z du programme 7-Zip, StuffitX et quelques autres archiveurs, ainsi que et par les commandes dédiées à la compression de données, xz et lzma. Il utilise une compression avec dictionnaire assez similaire au LZ77 et offre un fort taux de compression (en général plus fort que le Bzip2) et une taille variable de dictionnaire de compression (jusqu'à 4 Go).

Outre son taux de compression plus élevé, il a le double avantage d'être plus rapide que bzip2 pour les taux de compression faible, mais surtout d'être plus rapide que celui-ci lors de la décompression et à un taux de compression supérieur. En revanche il a l'inconvénient d'être très lent et gourmand en mémoire durant la compression avec des taux de compression élevés. Lors de l'utilisation des taux de compression les plus fort (-9 et -e) il nécessite 311 Mio de RAM pour la compression et 33 Mio de RAM pour la décompression[1].

Une nouvelle version de LZMA, LZMA2, le remplace dans le format XZ, appelé à remplacer le format .lzma (apportant de nouvelles fonctionnalités, notamment la vérification d'intégrité).

Usages[modifier | modifier le code]

7-Zip est un archiveur utilisant par défaut la compression LZMA. Son auteur, le Russe Igor Pavlov, l'a créé autour du kit de développement LZMA. Le SDK et 7-zip ont été portés dans des environnements POSIX dans P7zip.

Le kit de développement fournissait dans ses premières versions, entre autres l'exécutable « lzma » qui est un simple compresseur de flux (utilitaire comparable à bzip2). L'outil lzma compresse les fichiers en ajoutant une extension .lzma à la fin du nom de fichier. L'utilisation de ce format de fichier est fortement déconseillé par les concepteurs[2], car ce format n'a pas de vérification d'intégrité des données. En particulier, l'outil lzma ignore toutes données supplémentaires à la fin du fichier; de telles données sont usuellement interprétée comme une erreur par les autres programmes du même type.

Les concepteurs ont donc crée une nouvelle version de leur kit, appelé xz, ajoutant une somme de contrôle d'intégrité au fichier. Il recommandent l'utilisation de ces outils XZ, qui permettent entre autres d'utiliser l'algorithme LZMA, conjointement avec un algorithme de contrôle d'intégrité. La syntaxe des outils xz est semblable à celle des outils lzma et permettent de décompresser ceux-ci.

L'outil pxz (pour « parallel xz » (« xz parallèle »en anglais) également présent dans 7-Zip permet d'effectuer une compression LZMA en la répartissant sur plusieurs processeurs. Cela a l'avantage d’accélérer ce type de compression sur les architecture multiprocesseurs, mais en raison de la taille variable des paquets traités dans cet algorithme, d'avoir un taux de compression moins efficace que la version uni-processus[3].

Utilisations[modifier | modifier le code]

Le fait d'avoir un très bon taux de compression et une excellente vitesse de décompression a permis à ce format d'être utilisé dans des formats de systèmes de fichiers compressés accédés en lecture seule.

On peut utiliser lzma au-dessus de l'archiveur tar à la façon de bzip2 ou gzip. Ce n'est pas incongru, certaines versions de tar (celle de busybox par exemple) gèrent les archives (.tar.lzma) lzma. Puisque lzma gère nativement le multithreading cela peut être plus rapide qu'utiliser bzip2. (à noter qu'il existe aujourd'hui une version multithread de bzip2 sous le nom de pbzip2 qui apporte le même type de gain de vitesse)

Licence[modifier | modifier le code]

Le SDK de LZMA est placé dans le domaine public depuis la version 4.62.

Notes et références[modifier | modifier le code]

  1. (en) banc de test gzip/bzip2/LZMA
  2. page de man du programme
  3. (en) PXZ - Parallel LZMA compressor using liblzma

Liens externes[modifier | modifier le code]