En este artículo vamos a explicar qué es la compresión de archivos y nos preguntaremos qué formato es mejor compresor de archivos. Vamos a probar diferentes formatos populares (ZIP, GZIP, BZIP2, RAR, ARJ, 7ZIP) para ver con cual se obtiene el mejor resultado.
¿Qué es la compresión de archivos?
La compresión de archivos o compresión de datos trata de reducir la cantidad de datos necesarios para guardar cierta información para emplear el menor espacio posible.
Los algoritmos de compresión son complejas operaciones matemáticas que tratan de acortar los datos necesarios para guardar información (“comprimir”). Pero también deben permitir el proceso inverso, es decir, recuperar la información original desde la versión comprimida (“descomprimir”).
Básicamente, los algoritmos de compresión buscan cadenas que se repiten para luego codificarlas en menor espacio.
Por ejemplo, el texto:
AAAAAABCCCCCCCDAAAAA
podría comprimirse como:
6AB7CD5A
Donde el número delante de cada letra indica las veces que debe repetirse la letra para descomprimir y recuperar la cadena original.
Este es un ejemplo muy simple pero nos da una idea de cual es la idea general. Los algoritmos de compresión utilizan procesos mucho más complejos.
¿Por qué comprimir?
Al comprimir conseguimos lo siguiente:
- Reducir el espacio necesario para guardar un archivo o carpeta, dejando espacio libre para almacenar otros ficheros.
- Poder almacenar en un mismo dispositivo (USB por ejemplo) más cantidad de información.
- Copiar más rápidamente archivos (es más rápido copiar un archivo grande que muchos pequeños aunque el tamaño total sea igual).
- Ahorrar ancho de banda y tiempo de transmisión al enviar datos por Internet (bajar o subir archivos).
¿Qué formatos podemos usar para comprimir archivos?
Para comprimir archivos hay muchísimas utilidades y muchos formatos. El más conocido es quizás el formato ZIP, aunque también lo son los formatos RAR, ARJ, GZIP, 7ZIP, BZIP2, KGB, CAB, etc.
Una vez comprimes un archivo o directorio, normalmente se le añade una extensión que nos indique de qué tipo es. Por ejemplo, “archivo.zip” o “archivo.7z”.
Cada formato de archivo llevará su tiempo y será capaz de comprimir mas o menos, dependiendo del algoritmo utilizado.
¿Qué tipos de archivos podemos comprimir?
En principio podemos comprimir cualquier archivo, pero es cierto que muchas veces creemos que los compresores no funcionan bien sobre ciertos tipos de archivos, como imágenes, vídeos o audios.
Muchos de los formatos de imágenes (JPG, PNG, GIF, etc.), formatos de vídeo (DIVX, AVI, OGV, MPEG, etc.) y formatos de audio (MP3, MP4, OGG, MPEG-Audio, etc.) ya son de por sí formatos comprimidos. Es decir, son archivos comprimidos con algoritmos especiales para cada tipo de datos.
Por ejemplo, el formato MP3 está particularmente pensado para almacenar audio comprimido con una calidad suficiente como para descomprimirlo y oírlo correctamente.
Por esto, comprimir más un archivo ya comprimido como puede ser una canción en MP3 o una foto en JPG es prácticamente imposible.
Así pues, los mejores resultados se consiguen con archivos cuyo formato no esté comprimido, como imágenes en formato BMP o documentos de texto o de datos (DOC, XLS, DAT, TXT, XML, HTML, CSS, PDF, etc.)
Análisis
El tiempo empleado en comprimir dependerá de la CPU utilizada, así que para este análisis he decidido no mostrar tiempo de cada compresión. He tomado el tiempo empleado por el formato ZIP que usaré de referencia para comparar al resto.
Los datos siempre son los mismos, para poder comparar. He elegido una carpeta llena de ficheros en formato de texto e imágenes en formato JPG y PNG. En total, contiene 16.959 ficheros con un total de 171 MB sin comprimir.
Muchos formatos permiten elegir el nivel de comprensión. Para este análisis, se utilizará el nivel predeterminado de compresión.
Y aquí está el resultado obtenido por cada uno de los formatos probados:
Formato | Tiempo | Tamaño | Porcentaje tamaño |
ZIP | 100% | 77,5MB | 45% |
GZIP | 44% | 72MB | 42% |
7Zip | 219% | 61,7MB | 36% |
BZip2 | 156% | 68,4MB | 40% |
ARJ | 131% | 76,5MB | 45% |
RAR | 178% | 74,5MB | 44% |
Podemos observar que el formato que más ha comprimido es el formato 7ZIP pero también es el que ha necesitado mayor tiempo con diferencia. Por el contrario, el formato GZIP (que debe ser archivado con el formato TAR) ha conseguido un tiempo casi la mitad que ZIP y comprimir incluso algo más. El resto de formatos consigue un tamaño final muy similar al formato ZIP que es el que hemos tomado de referencia, pero con un tiempo superior al ZIP.
Ahora, dependerá de la importancia que le demos al tiempo necesario o al espacio resultante. Si te interesa comprimir mucho 7ZIP es el mejor compresor pero si lo que te interesa es comprimir rápido GZIP es la mejor opción.
Conclusión
GZIP se muestra como el compresor que más comprime y en menor tiempo. GZIP es un formato original de los sistemas UNIX/LINUX pero también cuenta con una versión para Windows.
ZIP es un formato presente tanto en Windows, Linux y otros sistemas operativos, ofreciendo un rendimiento bueno tanto de tiempo como de compresión. Quizás por ello se ha convertido en uno de los más utilizados.
Enlaces relacionados
7ZIP, alternativa Open Source para Windows y Linux
WinRAR, compresor comercial de RAR
WinZIP, compresor comercial de ZIP