LZ4 és un algorisme de compressió de dades sense pèrdua que se centra en la velocitat de compressió i descompressió. Pertany a la família LZ77 d'esquemes de compressió orientats a bytes.

Característiques Els algorismes LZ4 pretenen oferir un bon compromís entre velocitat i relació de compressió. Normalment, té una relació de compressió més petita (és a dir, pitjor) que l'algorisme LZO similar, que al seu torn és pitjor que algorismes com DEFLATE. Tanmateix, la velocitat de compressió LZ4 és similar a LZO i diverses vegades més ràpida que DEFLATE, mentre que la velocitat de descompressió és significativament més ràpida que LZO.

Disseny LZ4 només utilitza una fase de concordança de diccionari (LZ77) i, a diferència d'altres algorismes de compressió comuns, no la combina amb una fase de codificació d'entropia (per exemple, la codificació de Huffman a DEFLATE).

L'algorisme LZ4 representa les dades com una sèrie de seqüències. Cada seqüència comença amb un testimoni d'un byte que es divideix en dos camps de 4 bits. El primer camp representa el nombre de bytes literals que s'han de copiar a la sortida. El segon camp representa el nombre de bytes a copiar de la memòria intermèdia de sortida ja descodificada (amb 0 representa la longitud mínima de coincidència de 4 bytes). Un valor de 15 en qualsevol dels camps de bits indica que la longitud és més gran i que hi ha un byte addicional de dades que s'ha d'afegir a la longitud. Un valor de 255 en aquests bytes addicionals indica que s'ha d'afegir un altre byte. Per tant, les longituds arbitràries es representen per una sèrie de bytes addicionals que contenen el valor 255. La cadena de literals ve després del testimoni i els bytes addicionals necessaris per indicar la longitud de la cadena. Això va seguit d'un desplaçament que indica fins a quin punt es pot començar a copiar a la memòria intermèdia de sortida. Els bytes addicionals (si n'hi ha) de la longitud de la concordança es troben al final de la seqüència.

La compressió es pot dur a terme en un corrent o en blocs. Es poden aconseguir ràtios de compressió més alts invertint més esforç en trobar les millors coincidències. Això es tradueix en una sortida més petita i una descompressió més ràpida.

Implementació La implementació de referència en C per Yann Collet està autoritzada sota una llicència BSD. Hi ha ports i enllaços en diversos idiomes com Java, C#, Rust i Python. El sistema Apache Hadoop utilitza aquest algorisme per a una compressió ràpida. LZ4 també es va implementar de forma nativa al nucli Linux 3.11. Les implementacions de FreeBSD, Illumos, ZFS a Linux i ZFS-OSX del sistema de fitxers ZFS admeten l'algoritme LZ4 per a la compressió sobre la marxa. Linux admet LZ4 per a SquashFS des de 3.19-rc1. LZ4 també és compatible amb la nova utilitat de línia d'ordres zstd de Yann Collet.

LZ4 disponible en versió ampliada 7zip.

Referències

Categoria:Algorismes de compressió