Minipruebas de compresores en Linux

Sección [] Fecha [2003-09-18] Hora [15:03]

Prueba y cronometrado de compresión gzip y bzip2 (¡y zip!) con sus valores (de compresión) máximo y mínimo.
pj@desarrollo:~/proyectos> time gzip -1 binarios-gz1.tar

real 0m2.171s
user 0m1.840s
sys 0m0.260s


pj@desarrollo:~/proyectos> time gzip -9 binarios-gz9.tar

real 0m13.084s
user 0m12.770s
sys 0m0.130s


pj@desarrollo:~/proyectos> time bzip2 -z1 binarios-bz1.tar

real 0m12.752s
user 0m12.340s
sys 0m0.180s


pj@desarrollo:~/proyectos> time bzip2 -z9 binarios-bz9.tar

real 0m18.161s
user 0m17.490s
sys 0m0.160s


-rw-r--r-- 1 pj users 12156052 2003-09-18 08:04 binarios-bz1.tar.bz2
-rw-r--r-- 1 pj users 11462865 2003-09-18 08:04 binarios-bz9.tar.bz2
-rw-r--r-- 1 pj users 14068154 2003-09-18 08:04 binarios-gz1.tar.gz
-rw-r--r-- 1 pj users 12501394 2003-09-18 08:04 binarios-gz9.tar.gz
-rw-r--r-- 1 pj users 35246080 2003-09-18 08:03 binarios.tar


La compresión tanto con gzip como con bzip2 es muy buena, llegando a reducir el tamaño de los binarios comprimidos en más de un 50%. Están claras cosas que a priori eran lógicas, como que si queremos velocidad deberemos acudir a gzip con su mínimo nivel de compresión con el que hemos conseguido un tiempo de 2'171s. Un muy buen tiempo si lo comparamos con los 12'752s de bzip2 con su también mínimo valor. No seríamos justos si no destacaramos que, precisamente, bzip2 con su mínimo valor de compresión consigue un mejor tiempo y una mayor compresión que gzip con su máximo valor, cosa que descarta a gzip en cualquier caso excepto para cuando la velocidad sea mucho más importante que el espacio y en ese caso a veces ni siquiera nos hará falta comprimir, con tar nos sobrará.

Resumiendo:
· Si quieres velocidad y no te importa el tamaño en absoluto no comprimas, solo empaqueta (tar).
· Si quieres una buena relación entre velocidad y tamaño prueba con bzip2 en su mínimo valor de compresión (-z1).
· Si quieres la máxima compresión y no te importa en absoluto el tiempo usa bzip en su máximo valor de compresión (-z9).
· Si quieres portabilidad hacia otras plataformas y el tamaño no es crítico usa gzip. (Aunque parece ser que bzip2 ya está soportado por los descompresores más famosos de Windows)

Comparación con zip:

pj@desarrollo:~/proyectos> time zip -1 binarios-zip1.tar.zip binarios-zip1.tar
adding: binarios-zip1.tar (deflated 60%)

real 0m2.584s
user 0m2.240s
sys 0m0.230s


pj@desarrollo:~/proyectos> time gzip -9 binarios-gz9.tar

real 0m13.084s
user 0m12.770s
sys 0m0.130s


-rw-r--r-- 1 pj users 14068285 2003-09-18 08:22 binarios-zip1.tar.zip
-rw-r--r-- 1 pj users 12501525 2003-09-18 08:22 binarios-zip9.tar.zip


Si lo comparamos con gzip vemos que tiene unos resultados MUY similares tanto en tiempo como en compresión. Tanto es así que en las dos pruebas la máxima compresión ha tardado lo mismo tanto para zip como para gzip, siendo el segundo el que ha comprimido más: 131 bytes sobre 12'5MB. Con el mínimo valor de compresión ocurre casi lo mismo: 4 décimas más lento zip y 131 bytes de nuevo de diferencia.

· ¿Son gzip y zip lo mismo en cuanto a algoritmos de compresión? Seguramente, además de que las diferencias de tamaño entre ambos parecen ser siempre de 131 bytes. Esto puede corresponder a algún tipo de meta-información que zip guarde en el archivo comprimido.

· ¿Ventajas de zip sobre gzip? Nos podemos saltar el empaquetar con tar, ya que zip también empaqueta. De todas maneras hoy en día tar ya lleva opciones para usar gzip justo después de empaquetar de forma que con una sola orden tendremos nuestros archivos comprimidos.

Comparativa descompresión:

pj@desarrollo:~/proyectos> time bunzip2 binarios-bz1.tar.bz2

real 0m3.754s
user 0m3.430s
sys 0m0.290s


pj@desarrollo:~/proyectos> time bunzip2 binarios-bz9.tar.bz2

real 0m6.250s
user 0m5.870s
sys 0m0.280s


pj@desarrollo:~/proyectos> time gunzip binarios-gz1.tar.gz

real 0m1.013s
user 0m0.720s
sys 0m0.230s


pj@desarrollo:~/proyectos> time gunzip binarios-gz9.tar.gz

real 0m0.926s
user 0m0.620s
sys 0m0.260s


pj@desarrollo:~/proyectos> time unzip binarios-zip1.tar.zip
Archive: binarios-zip1.tar.zip
inflating: binarios-zip1.tar

real 0m1.094s
user 0m0.950s
sys 0m0.140s


pj@desarrollo:~/proyectos> time unzip binarios-zip9.tar.zip
Archive: binarios-zip9.tar.zip
inflating: binarios-zip9.tar

real 0m1.088s
user 0m0.810s
sys 0m0.210s



Estos resultados pueden hacer cambiarnos de opinión si nuestra premisa es el tiempo o si no disponemos de una máquina medianamente potente. Se nota la pesadez de los algoritmos de compresión de bzip2 y la ligereza de gzip, que apaliza notablemente al anterior cuando jugamos con las compresiones máximas. Sobretodo destacar los 0'9s que tarda gzip en máxima compresión frente a los 3'7s de bzip2 en mínima compresión (recordad que en tamaño eran bastante similares). Zip mantiene unos buenos tiempos, de apenas 1s tanto en máxima como mínima compresión, sin destacar en ningún aspecto.

Resumiendo:

· Gzip para casos en que necesitemos velocidad y para casos equilibrados en cuanto a velocidad y compresión.
· Definitivamente zip para la portabilidad.
· Bzip2 a máxima compresión para casos en los que importe principalmente el tamaño (p.ej.: descargas de internet).

Realizado en un P4 2.4GHz, 256MB RAM, HD Maxtor 80GB (7200 RPM) bajo SuSe Linux 8.2


Comenta (4) comentario/s

Referencias (TrackBacks)

URL de trackback de esta historia http://simbiosis.blogalia.com//trackbacks/11445

Comentarios

1
De: pj Fecha: 2003-10-06 06:29

Se perdieron los comentarios de esta historia :(

Mil perdones a los comentaristas :))



2
De: laura ochoa Fecha: 2008-06-25 22:31

este programa es muy pero muy malo y no se merece que lo utilicen



3
De: pj Fecha: 2008-10-20 18:15

Estoy completamente de acuerdo, no se ni como lo dejan salir a la calle.



4
De: juan yañez Fecha: 2008-11-06 22:01

esto me enseño a que en ni una pagina hay informacion recerida en toda la internet



Nombre
Correo-e
URL
Dirección IP: 54.163.61.66 (62b3fd9c56)
Comentario
¿Cuánto es: mil + uno?