LZMA

aus openSUSE, der freien Wissensdatenbank

Der Lempel-Ziv-Markow-Algorithmus (LZMA) ist ein seit 1998 in Entwicklung befindlicher Algorithmus zur Datenkompression, der im 7z-Format des 7-Zip-Archivierers genutzt wird. Er arbeitet mit einem Wörterbuchverfahren ähnlich [ LZ77] und ermöglicht eine hohe Kompressionsrate (durchschnittlich besser als bzip2 und eine variable Wörterbuchgröße.

Seit openSUSE 11.0 hat openSUSE für die RPM-Pakete von bzip2 auf LZMA gewechselt.


Inhaltsverzeichnis

Vergleiche zu bzip2


Einige Vergleichszahlen finden Sie in Stephan Kulows Blog-Eintrag. Der Test vergleicht zuerst ein paar Kompressionen (mit coreutils als Beispiel):

Kompression

bzip2

-rw-r--r-- 1 coolo suse 36966400 13. Mär 09:42 coreutils-6.10.tar
8.61user 0.05system 0:08.66elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+11936outputs (0major+2007minor)pagefaults 0swaps
-rw-r--r-- 1 coolo suse 6110179 13. Mär 09:45 coreutils-6.10.tar.bz2.9

LZMA

5.83user 0.04system 0:05.88elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+10720outputs (0major+3271minor)pagefaults 0swaps
-rw-r--r-- 1 coolo suse 5488129 13. Mär 09:48 coreutils-6.10.tar.lzma.2

Oder:

42.07user 0.10system 0:42.27elapsed 99%CPU (0avgtext+0avgdata  0maxresident)k
0inputs+8576outputs (0major+6768minor)pagefaults 0swaps
-rw-r--r-- 1 coolo suse 4385224 13. Mär 09:50 coreutils-6.10.tar.lzma.5

Wie Sie gut sehen können schlägt lzma -2 bzip -9 sowohl in der Größe als auch in der Kompressionsgeschwindigkeit (wobei etwas mehr Arbeitsspeicher gebraucht wird).

Die Nutzung höherer Kompressionsraten als -2 sind nicht so wirtschaftlich. So spart -5 zwar nochmals 1MB Festplattenplatz ein, braucht aber mehr als fünf mal so lang für die Kompression wie bzip2 und verbraucht nochmals mehr Arbeitsspeicher.

Dekompression

LZMA bietet auch bei der Dekompressionsgeschwindigkeit große Vorteile:

bzip2

Dekomprimieren des bzip.9:

1.81user 0.00system 0:01.82elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1068minor)pagefaults 0swaps

LZMA

Dekomprimieren des lzma.2:

0.80user 0.00system 0:00.83elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+824minor)pagefaults 0swaps

Das ist 2,3 mal schneller als bzip2.

Dekomprimieren des lzma.5:

0.69user 0.01system 0:00.70elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1080minor)pagefaults 0swaps

2,6 mal schneller.


Fazit


LZMA bietet Nutzern signifikante Vorteile gegenüber bzip2:

  • Kleinere Datentransfers (höhere Kompresseion)
  • Schnellere Installation von Paketen (schnellere Dekompression)

Für Distributoren:

  • Mehr Platz auf physischen Medien für Software (Installation von CD/DVD/USBs)
  • Weniger Bandbreitennutzung (auf Grund kleinerer Pakete)