Uživatelské nástroje

Nástroje pro tento web


lz4

LZ4: Šampion v rychlosti komprese

LZ4 vytvořil Yann Collet (který stojí i za algoritmem ZSTD) v roce 2011. Jeho hlavní filozofií je, že dekomprese by měla probíhat rychlostí blízkou limitům propustnosti paměti RAM.

1. Princip fungování (Byte-oriented LZ77)

LZ4 pracuje na principu vyhledávání duplicitních sekvencí v datech pomocí posuvného okna (sliding window).

  • Literály: Pokud algoritmus nenajde shodu, zapíše data přímo jako „literál“.
  • Reference (Match): Pokud najde stejnou sekvenci, kterou už viděl, zapíše pouze dvojici (offset, length) – tedy informaci „vrať se o X bajtů zpět a zkopíruj Y bajtů“.

Proč je tak rychlý?

  • Žádná entropická komprese: Na rozdíl od GZIP nebo ZSTD, LZ4 nepoužívá Huffmanovo kódování ani aritmetické kódování na konci procesu. To dramaticky snižuje zátěž CPU.
  • Optimalizace pro moderní CPU: Formát dat je navržen tak, aby minimalizoval větvení v kódu (branching) a umožnil efektivní využití instrukcí procesoru.

2. Klíčové vlastnosti

  • Extrémní dekomprese: Rychlost dekomprese často dosahuje několika GB/s na jedno jádro procesoru.
  • Asymetrie: Komprese je o něco pomalejší než dekomprese, ale stále patří k nejrychlejším na trhu.
  • Paralelizace: LZ4 lze snadno rozdělit do bloků a komprimovat/dekomprimovat více vlákny současně.

3. Praktické využití

Souborové systémy a úložiště

V systémech jako ZFS nebo Btrfs je LZ4 často výchozím kompresním algoritmem.

  • Zvýšení výkonu: Paradoxně může zapnutí LZ4 zrychlit zápis na pomalé disky. Procesor data zkomprimuje tak rychle, že na disk se fyzicky zapisuje méně dat, což trvá kratší dobu než zápis nekomprimovaných dat.

Linux Kernel

  • zRam / zSwap: Linux používá LZ4 pro kompresi dat v paměti RAM, čímž efektivně zvětšuje dostupnou paměť za cenu minimální režie CPU.
  • Bootování: Jádro Linuxu zkomprimované pomocí LZ4 se načítá nejrychleji ze všech dostupných metod.

Big Data a Sítě

  • Používá se v protokolech jako Apache Cassandra, Hadoop nebo při přenosu dat v reálném čase, kde je latence kritickým faktorem.

4. Srovnání výkonu

Algoritmus Rychlost komprese Rychlost dekomprese Kompresní poměr
LZ4 10/10 (Extrémní) 10/10 (Extrémní) 4/10 (Nízký)
ZSTD 7/10 (Vysoká) 8/10 (Velmi vysoká) 8/10 (Vysoký)
GZIP 3/10 (Pomalá) 6/10 (Střední) 7/10 (Vysoký)

Zajímavost: Existuje i varianta LZ4_HC (High Compression), která obětuje rychlost komprese (stává se mnohem pomalejší), aby dosáhla lepšího kompresního poměru, ale zachovává si bleskovou rychlost dekomprese. Je ideální pro data, která se „jednou zapíšou a často čtou“.

Související: ZFS, Linux, I/O, JavaScript

lz4.txt · Poslední úprava: autor: admin