Lempel – Ziv – Oberhumer - Lempel–Ziv–Oberhumer
Deweloper (y) | Markus FXJ Oberhumer |
---|---|
Pierwsze wydanie | 20 maja 1996 |
Wersja stabilna | 2.10 / 1 marca 2017
|
System operacyjny | Wieloplatformowy |
Rodzaj | kompresja danych |
Licencja | GPLv2 lub komercyjny |
Stronie internetowej | www |
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:
- btrfs używa LZO jako możliwej metody kompresji systemu plików .
- initrd i initramfs używają LZO jako możliwej metody kompresji początkowej kompresji dysku RAM .
- SquashFS używa LZO jako możliwej metody kompresji systemu plików .
-
zram używa LZO z kodowaniem run-length nazywanym
LZO-RLE
domyślną metodą kompresji dla kompresji dysku RAM . - zswap używa LZO jako domyślnej metody kompresji pamięci wirtualnej
Bibliografia
Linki zewnętrzne
- oberhumer.com: biblioteka kompresji danych w czasie rzeczywistym LZO
- Fanpage LZO / LZOP at the Wayback Machine (archiwum 25 czerwca 2012)
- Arnaud Bouche (2008). „Szybki kompresowanie / dekompresowanie LZO: wdrożenie w kodzie maszynowym 80386 dla Delphi” .
- lzo-java na GitHub - implementacja algorytmu kompresji liblzo2 LZO w czystej Javie
- Format strumienia LZO rozumiany przez dekompresor LZO Linuksa