Capítulo 4: Realización de tareas básicas



Compresión/Descompresión.

Comprimir archivosLa compresión de archivos y carpetas permite tanto el ahorro de espacio en un dispositivo de almacenamiento, como hacer más sencillo el envío de archivos entre ordenadores, ya que se reduce el tiempo necesario.

Tanto en sistemas Windows como en Ubuntu se incluyen las herramientas básicas para permitir la compresión y descompresión de archivos sin tener que instalar ningún programa complementario. Sin embargo, cuando necesitamos algún formato diferente de los predeterminados, sí que será necesario recurrir a programas de terceros.

Podemos decir que la compresión de la información es una forma de codificación destinada a que el resultado tenga un tamaño inferior que el origen.

En general, el objetivo consiste en buscar patrones que se repitan a lo largo de la entrada original y representarlos con una cantidad inferior de bits.

En este sentido, debemos considerar que la información suele estar formada por tres tipos de datos:

  • Reiterativos: son los datos que se repiten o que pueden predecirse.

  • Irrelevantes: son los datos que podremos eliminar sin afectar al significado de la información.

  • Básicos: son los datos imprescindibles para reconstruir la información y que no forman parte de los grupos anteriores.

En base a estos tipos de datos, podemos establecer dos tipos de compresión:

  • Compresión sin pérdida (lossless): se codifica toda la información, pero eliminando los datos que se repiten o sustituyéndolos por una representación que ocupe menos espacio. Al recuperara la información, el resultado será idéntico al original. Este es el método que se aplica, por ejemplo, para crear un archivo ZIP.

    Normalmente, para obtener un mayor ratio de compresión se necesitará un mayor tiempo de proceso.

    Una variante es la compresión sin pérdida subjetiva. En realidad, se trata de una compresión con pérdida, pero sólo se eliminan los datos irrelevantes, de modo que la información recuperada parezca, subjetivamente, la misma. Suele utilizarse en la digitalización de información analógica (como imágenes o sonido).

  • Compresión con pérdida (lossy): Se eliminan una parte de los datos básicos, que no podrán volver a recuperarse. De este modo, al recuperar la información, se obtendrán una versión con errores de la original. Aunque estos errores sean perceptibles, para que la compresión sea eficaz, deben ser asumibles por el usuario.

    Como en el caso de la compresión sin pérdida subjetiva, suele utilizarse para digitalizar información analógica (como imágenes o sonido). Un ejemplo típico de este método es el formato de imagen JPG.

    Normalmente, para obtener un mayor ratio de compresión se sacrifica la calidad del resultado.

Por último, existen una serie de aspectos que deben tenerse en cuenta cuando se habla de compresión de archivos. Son los siguientes:

  • Ratio de compresión: podríamos definirlo como la relación cuantitativa entre el tamaño de origen y el resultado obtenido. Expresado como una fracción (por ejemplo ½), cuanto más pequeño sea su valor, mejor será el algoritmo de compresión aplicado.

  • Velocidad de proceso: En entornos equivalentes, será mejor el algoritmo que necesite menos tiempo para realizar su trabajo. En este sentido, debemos tener en cuenta que suele medirse de forma independiente el tiempo de compresión y el de descompresión.

  • Cantidad de memoria: También en este sentido puede haber importantes variaciones entre un algoritmo y otro.

Aunque existen muchos algoritmos de compresión, en la siguiente tabla se incluyen algunos de los más conocidos:

En cualquier caso, es importante que tengamos en cuenta que la compresión y descompresión de archivos conlleva un tiempo de proceso que estará en función del volumen de información implicado. En el caso de las carpetas comprimidas de Windows, este aspecto es más preocupante. Imagina, por ejemplo, que estás editando un archivo que se encuentra en una carpeta comprimida. Cada vez que accedas al archivo este deberá ser descomprimido y, cada vez que guardes cambios, el archivo deberá volver a comprimirse, con la correspondiente penalización de rendimiento.

Por otro lado, no todos los archivos que se comprimen arrojan un ahorro de espacio significativo. Por ejemplo, el formato de archivo .JPG ya representa un método de compresión de imágenes por sí mismo, por lo que, si creamos un archivo comprimido con un grupo de archivos de imágenes en este formato, el tamaño total del archivo resultante no será muy inferior a la suma de los tamaños de las imágenes.

Para ilustrar cómo funciona la compresión de archivos, puedes consultar los diferentes artículos que hemos publicado en SomeBooks.es relacionados con este tema: