Optimizar archivos ZIP

El avance de las herramientas de compresión es imparable, aunque a pesar de todo, seguimos usando ZIP como standard defacto debido al elevado grado de compatibilidad que se obtiene.

Sin embargo, el paso de 20 años, no perdonan al formato ZIP, dejándolo algo retrasado en cuanto a grado de compresión sobre alternativas más modernas como 7-Zip o RAR.

Ayudándonos de dos herramientras gratuitas de consola para Windows como KZIP de Ken Silverman y DeflOpt de Ben Jos Walbeehm vamos a intentar ver la mejora que podemos obtener sobre ZIP, sin perder la compatibilidad tradicional. Hablamos por tanto de Deflate, que es virtualmente extraible en cualquier PC de los últimos 35 años.

Como base de las pruebas partimos del ZIP de distribución de Digital Mars C/C++ Compiler Version 8.50 que tiene un peso de 2.877.958 bytes.

Desconozco como se ha generado ese ZIP, así que para tener una idea, lo he recomprimido en ZIP con WinRAR 3.90 a máxima compresión, y ha quedado en 2.856.835 bytes. Con uno de los mejores motores de compresión ZIP, el de 7-Zip 9.07 en su grado de compresión máximo el fichero resultante han sido 2.764.122 bytes (hemos ahorrado 113.836 bytes). Este sería el ahorro que podríamos conseguir sin demasiadas molestias, es decir 111 Kb. sobre un total de 2.810 Kb. no es despreciable, pero tampoco es demasiado.

El ahorro, sale a cuenta si ese programa ZIP debe ser descargado por ejemplo de internet. Entonces tenemos que los ahorros se multiplican por cada descarga. En el caso del citado DigitalMars, es fácil que hablemos de varios miles de descargas diarias, con lo que el ahorro aumenta.

KZIP es un compresor de formato ZIP, diseñado para obtener los mejores grados de compresión, independientemente del coste de tiempo necesario para hacerlo. Con él, hemos conseguido dejar nuestro paquete de pruebas en 2.758.557 bytes (hemos ahorrado 119.401 bytes).

Luego con DeflOpt, que se encarga de eliminar bloques innecesarios en ficheros que usan deflate (permite optimizar por tanto ZIP, PNG, SWF, …), el paquete se ha quedado en 2.756.608 bytes (hemor ahorrado 121.350 bytes).

Así que todo el proceso extra, nos ha permitido un ahorro de apenas 119 Kb., o lo que es lo mismo 8 Kb. menos que el paquete de 7-Zip, una mejora muy pequeña, pero al mismo una mejora que aparte de un consumo de CPU extra al hacer la distribución, es una mejora al fin y al cabo.



2 comentarios en “Optimizar archivos ZIP”

  1. Sé que tiene poco que ver con el artículo, pero no me puedo resistir: personalmente, desaconsejo por completo el uso de RAR, al ser propietario. No es ninguna postura de radical del software libre (que no lo soy), sino el de alguien que mira a largo plazo.

    El problema del almacenamiento y la lectura de datos en el futuro no es asunto baladí: documentales alarmistas aparte (que los hay), la amenaza de una época oscura de información está ahí presente y sólo disponemos de dos armas eficaces para combatirla: los backups y los estándares abiertos.

    Por otra parte, creo que la importancia que le da la gente a los algoritmos de compresión es inversamente proporcional al aumento de la velocidad media de las conexiones y del tamaño de las memorias portátiles (pendrives y compañía). Y más, cuando la buena parte del material susceptible de ser comprimido es contenido multimedia, del cual escaso ahorro de bytes se puede obtener (salvo que esté "en bruto" o con formatos/codecs sin pérdida).

    Pese a todo, es admirable que estos algoritmos se sigan mejorando y aún haya gente como tú que siga su evolución.

  2. Tu comentario acerca de la compatibilidad futura es acertado mced, aunque no hay que olvidar la compatibilidad del soporte. Personalmente he tenido más problemas en acceder a discos de 5,25, que en extraer contenido digamos en ARC o ARJ.

    En cuanto a RAR, ten en cuenta que el descompresor si que es libre (lo puedes descargar aquí, de manera que en un futuro, podrías llegar a compilarlo (suponiendo que siguiera habiendo compiladores de C, que afortunadamente parece que si) para tu plataforma, y extraer los contenidos.

    Por tanto, y aunque el formato RAR no es libre, si lo es al menos su descompresor. Tienes razón que ZIP en cambio es libre, y de PKWare sólo queda la implementación inicial. En ese sentido, mucho mejor 7-Zip, que es igual de abierto, pero con mejor grado de compresión.

    Obviamente tu razonamiento es muy válido para formatos como ACE o RK, donde si hay implementaciones de descompresión abiertas, son de terceros, y poco fiables.

Deja un comentario