Lempel – Ziv – Oberhumer - Lempel–Ziv–Oberhumer

LZO
Deweloper (y) Markus FXJ Oberhumer
Pierwsze wydanie 20 maja 1996 ; 24 lata temu ( 20.05.1996 )
Wersja stabilna
2.10 / 1 marca 2017 ; 3 lata temu ( 01.03.2017 )
System operacyjny Wieloplatformowy
Rodzaj kompresja danych
Licencja GPLv2 lub komercyjny
Stronie internetowej www .oberhumer .com / opensource / lzo /

Lempel – Ziv – Oberhumer ( LZO ) to bezstratny algorytm kompresji danych , który koncentruje się na szybkości dekompresji.

Projekt

Oryginalna implementacja „lzop”, wydana w 1996 roku, została opracowana przez Markusa Franza Xavera Johannesa Oberhumera na podstawie wcześniejszych algorytmów Abrahama Lempela i Jacoba Ziva . Biblioteka LZO implementuje szereg algorytmów o następujących cechach:

  • wyższa prędkość kompresji w porównaniu do kompresji DEFLATE
  • bardzo szybka dekompresja
  • wymaga dodatkowego bufora podczas kompresji (o rozmiarze 8 kB lub 64 kB, w zależności od poziomu kompresji)
  • nie wymaga dodatkowej pamięci do dekompresji innej niż bufor źródłowy i docelowy
  • pozwala użytkownikowi dostosować równowagę między współczynnikiem kompresji a szybkością kompresji, bez wpływu na szybkość dekompresji

LZO obsługuje nakładającą się kompresję i dekompresję w miejscu. Jako algorytm kompresji bloków kompresuje i dekompresuje bloki danych. Rozmiar bloku musi być taki sam dla kompresji i dekompresji. LZO kompresuje blok danych w dopasowania (przesuwany słownik) i uruchamia niepasujące literały, aby uzyskać dobre wyniki w przypadku wysoce nadmiarowych danych i radzi sobie z danymi niekompresowalnymi , rozszerzając tylko niekompresowalne dane o maksymalnie 1/64 oryginalny rozmiar mierzony na wielkości bloku co najmniej 1 kB.

Wdrożenia

Implementacja wzorcowa została napisana w ANSI C i została udostępniona jako wolne oprogramowanie na licencji GNU General Public License . Prawa autorskie do kodu są własnością Markusa FXJ Oberhumera. Został pierwotnie opublikowany w 1996 roku. Oberhumer napisał również nakładkę wiersza poleceń o nazwie lzop .

Wersje LZO są dostępne dla języków Perl , Python i Java . Zgłoszono, że różne implementacje LZO działają pod Win32 , AIX , ConvexOS, IRIX , Mac OS , Palm OS , PlayStation , Nintendo 64 , Wii , Solaris , SunOS , TOS (Atari ST), Linux i VxWorks .

Jądro Linuksa używa implementacji LZO w niektórych swoich funkcjach:

Bibliografia

Linki zewnętrzne