inicio mail me! sindicaci;ón

Archive for Algoritmia

Comparando utilidades de compresión

Hoy ha tocado colocar un poco el disco duro, y en estas que me da por mirar cuánto ocupa el directorio

.thunderbird/

donde guardo todo el correo que recibo (desde hace años, incluído spam). 1.8G suman todos los correos. Casi nada, teniendo en cuenta que es texto plano.

Buceando en ese directorio llego al fichero

Inbox

de una de mis cuentas de correo. Todo lo que almacena está en formato mbox, que es lo que habitualmente usan los lectores de correo (o MUAs, Mail User Agent). Los MTAs (Mail Transport Agent) suelen usar el formato Maildir ya que evita el cuello de botella que impone mbox ante la concurrencia.

El caso es que me da por mirar a ver qué tal comprimen los diferentes algoritmos de compresión que tengo en Linux, que son básicamente cuatro: bzip2, LZMA (7zip y versiones nuevas del tar), el tradicional Zip (herramientas zip y gzip) y RAR.

Me he centrado sólo en el ratio de compresión de cada programa, no me he preocupado por cuánto tardan en comprimir, ni cuánto se tarda en listar el contenido de un fichero, o en descomprimir un sólo fichero. De hecho es que no he diferenciado entre formatos que comprimen y archivan a la vez, y los que sólo comprimen (p.ej.

bzip2

). He comprimido un sólo fichero, y era un fichero de texto (en formato

mbox

).

Los resultados para un solo fichero

mbox

de 118M:

Programa Algoritmo Tamaño ¿Libre?
gzip -9 LZ77 modificado 65M
zip -v9 LZ77 modificado 65M
bzip2 Burrous-Wheeler/Huffman 63M
rar LZSS 56M No
7-zip LZMA 54M
tar –lzma LZMA 54M

Con ¿Libre? me refiero a si yo conozco implementaciones libres del algoritmo tanto para comprimir como para descomprimir.

El LZ77 modificado también se conoce como DEFLATE.

Se concluye lo que más o menos ya habíamos observado a base bajarnos discos:

LZMA

es el que más comprime (y es libre),

RAR

no se queda muy lejos (pero no es libre, aunque es bastante multiplataforma),

bzip2

mejora un poco lo del tradicional

Zip

, pero éstos dos ya van teniendo que jubilarse.

Las únicas ventajas que tienen

zip/gzip/bzip2

son a) que aparentemente tardan menos en comprimir (lógico) y b) que están mucho más difundidos: es difícil encontrar un sistema que no tenga alguno de los tres.

LZMA

en cambio, es más difícil de encontrar.

Update (2009-02-17): Hoy en barrapunto.com han publicado Comparación entre diferentes algoritmos de compresión en Linux . Una noticia que enlaza a tres sitios donde han hecho comparativas similares, pero mucho más extensas: