Lempel – Ziv – Oberhumer ( LZO ) es un algoritmo de compresión de datos sin pérdidas que se centra en la velocidad de descompresión. [1]
Desarrollador (es) | Markus FXJ Oberhumer |
---|---|
Versión inicial | 20 de mayo de 1996 |
Lanzamiento estable | 2.10 / 1 de marzo de 2017 |
Sistema operativo | Multiplataforma |
Tipo | compresión de datos |
Licencia | GPLv2 o comercial |
Sitio web | www |
Diseño
La implementación original de "lzop", lanzada en 1996, fue desarrollada por Markus Franz Xaver Johannes Oberhumer, basándose en algoritmos anteriores de Abraham Lempel y Jacob Ziv . La biblioteca LZO implementa una serie de algoritmos con las siguientes características: [1]
- mayor velocidad de compresión en comparación con la compresión DEFLATE
- descompresión muy rápida
- requiere un búfer adicional durante la compresión (de tamaño 8 kB o 64 kB, dependiendo del nivel de compresión)
- no requiere memoria adicional para la descompresión que no sean los búferes de origen y destino
- permite al usuario ajustar el equilibrio entre la relación de compresión y la velocidad de compresión, sin afectar la velocidad de descompresión
LZO admite compresión superpuesta y descompresión in situ. Como algoritmo de compresión de bloques, comprime y descomprime bloques de datos. El tamaño del bloque debe ser el mismo para compresión y descompresión. LZO comprime un bloque de datos en coincidencias (un diccionario deslizante) y ejecuta literales que no coinciden para producir buenos resultados en datos altamente redundantes y trata de manera aceptable los datos no comprimibles, expandiendo solo los datos incompresibles en un máximo de 1/64 de la tamaño original cuando se mide sobre un tamaño de bloque de al menos 1 kB.
Implementaciones
La implementación de referencia está escrita en ANSI C y está disponible como software libre bajo la Licencia Pública General GNU . Los derechos de autor del código son propiedad de Markus FXJ Oberhumer. Se publicó originalmente en 1996. Oberhumer también ha escrito una interfaz de línea de comandos llamada lzop .
Hay versiones de LZO disponibles para los lenguajes Perl , Python y Java . Se informa que varias implementaciones de LZO funcionan bajo Win32 , AIX , ConvexOS, IRIX , Mac OS , Palm OS , PlayStation , Nintendo 64 , Wii , Solaris , SunOS , TOS (Atari ST), Linux y VxWorks .
El kernel de Linux usa su implementación LZO en algunas de sus características:
- btrfs usa LZO como un posible método de compresión para la compresión del sistema de archivos .
- initrd e initramfs usan LZO como un posible método de compresión para la compresión inicial de la unidad RAM .
- SquashFS usa LZO como un posible método de compresión para la compresión del sistema de archivos .
- zram utiliza LZO con codificación de longitud de ejecución llamada
LZO-RLE
como método de compresión predeterminado para la compresión de la unidad RAM . - zswap usa LZO como método de compresión predeterminado para la compresión de memoria virtual
Referencias
- ^ a b "Biblioteca de compresión de datos en tiempo real LZO" .
enlaces externos
- oberhumer.com: biblioteca de compresión de datos en tiempo real LZO
- Fanpage de LZO / LZOP en Wayback Machine (archivado el 25 de junio de 2012)
- Arnaud Bouche (2008). "Compresión / descompresión rápida LZO: implementación en código máquina 80386 para Delphi" .
- lzo-java en GitHub : implementación de Java puro del algoritmo de compresión liblzo2 LZO
- Formato de flujo LZO como lo entiende el descompresor LZO de Linux