El algoritmo de compresión LZFSE pasa a ser de código abierto
Tras el lanzamiento el año pasado de iOS 9 y OS X 10.11, Apple presentaba un nuevo algoritmo de compresión bajo el nombre de LZFSE. Hace escasos días, Apple anunciaba que este proyecto pasaba a ser open source para que este formato estuviese disponible en el resto de plataformas.
Es un claro ejemplo de como a veces la mejor opción es poner el código fuente a disposición pública, para que la librería se pueda extender a otros sistemas operativos como Windows o Android.
¿Qué es el algoritmo de compresión LZFSE?
LZFSE es un algoritmo de compresión sin perdida diseñado para competir, o mejor dicho, para mejorar el actual algoritmo de compresión zlib.
El objetivo de LZFSE es conseguir unos ratios de compresión similares a zlib (a veces ligeramente superiores), pero ofrecer mayores velocidades de ejecución. Dicho de forma más sencilla, LZFSE comprime prácticamente lo mismo que zlib pero la compresión/descompresión es más rápida.
Según datos del propio Apple, LZFSE ofrece velocidades de compresión/descompresión 2-3 veces superiores a zlib. Esta mayor eficiencia permite realizar estas tareas en un menor tiempo y por lo tanto reducir el consumo de energía.
Las letras LZFSE son el acrónimo de Lempel-Ziv Finite State Entropy, un nombre que a su vez hace referencia a Abraham Lempel y Jacob Ziv, creadores del algoritmo LZ78.
La compresión de datos está cobrando bastante importancia en estos últimos años, de hecho hace algunos meses, Google liberaba otro algoritmo de compresión bajo el nombre de Brotli. Aunque este algoritmo de compresión tiene por objeto mejorar las transferencias de datos del protocolo HTTP.
Como compilar LZFSE en Ubuntu.
Vamos a compilar LZFSE en un sistema operativo Ubuntu 16.04 x64 y mostraremos un pequeño tutorial de cómo usarlo.
Necesitamos descomprimir un archivo zip durante el proceso de compilación, por lo que debemos de tener disponible el comando unzip
. Si no tenemos instalado unzip, ejecutamos el comando apt-get install unzip
Dentro de los requisitos previos, también vamos a necesitar algunas herramientas de desarrollador (GCC y clang) que podemos instalar con el siguiente comando:
apt-get install build-essential clang
Descargamos el código fuente desde GitHub empleando wget y luego compilamos:
wget https://github.com/lzfse/lzfse/archive/master.zip
unzip master.zip
cd lzfse-master
make install INSTALL_PREFIX=/tmp/lzfse.dst/usr/local
Cuando finalice el proceso de compilación, se crea una carpeta nueva build
que contiene el binario de LZFSE para usar desde la línea de comandos.
cd build/bin/
Ejecutamos LZFS para que nos muestre la ayuda:
./lzfse -h
Usage: ./lzfse -encode|-decode [-i input_file] [-o output_file] [-h] [-v]
Vemos que la sintaxis de uso es muy sencilla, vamos a probar a comprimir y descomprimir:
- Comprimir con LZFSE:
./lzfse -encode -i archivo.txt -o archivo_comprimido.lzfse
- Descomprimir con LZFSE:
./lzfse -decode -i archivo_comprimido.lzfse -o archivo.txt
Como podéis ver, es realmente sencillo de compilar y usar. Como ya dijimos antes, el proyecto es de código abierto y está disponible en GitHub.