Compresores en OS X 10.9

TuxA finales del  año pasado tomé un curso de administración de Linux. Una de las cosas nuevas de las que me enteré fue de la existencia de los compresores xy. Siendo Fin de Año y final de semestre, se acercaba el momento de hacer respaldo y depurar un poco el HDD de la “compu”.

Yo ya estaba al tanto de mejores opciones de compresión al tradicional compress que uno tiene en Unix, pero no sabía de la existencia del xy y mucho menos si estaba incluido en OS X. No lo estaba, pero no fue complicado investigar sobre la disponibilidad de éste y obtener una versión para OS X.

Ya antes había hecho el ejercicio de determinar cual compresor me convenía más en OS X pero ni recordaba los resultados y había que evaluar su desempeño. Esta vez decidí registrar los resultados para futura referencias.

El objeto a compactar consistió de un directorio con subdirectorios conteniendo video y fotografías (que de hecho es material con ya un cierto nivel de compresión, por lo que resultaba interesante ver que podía obtenerse). El tamaño del directorio a compactar era de 1,012,886,134 bytes. La prueba se hizo tanto en dos pasos (primero creando un paquete de archivos con el comando tar y luego procediendo a su compactación) y también en uno sólo (usuando un named pipe). La medición del tiempo se hizo empleando el comando time. La prueba se hizo en una computadora MacBook Pro 13-inch, Mid 2012, con dos núcleos Intel Core i7 de 2.9 GHz , 8 GB 1600 MHz DDR3 de memoria con OS X 10.9.5 (13F34). El origen de los datos se encontraba en el disco interno de 750GB de la MBP (APPLE HDD HTS547575A9E384 Media) y el destino en un disco externo iomega eGo de 160 GB (TOSHIBA MK1637GSX Media) conectado por USB; ambos discos con sistema de archivos HFS+ journaled.

Compactación simultánea a la creación del tar Compactación después de crear el tar
Utilería1 Bytes Reducción Tiempo2 Bytes Reducción Tiempo2
bzip2 969,469,626 4.29% 3m6.72s 969,469,679 4.29% 2m25.01s
gzip 1,002,033,921 1.07% 1m25.34s 1,002,033,927 1.07% 0m42.02s
xy3 954,727,012 5.74% 10m19.40s 954,727,020 5.74% 9m52.72s
xy4 969,642,172 4.27% 7m35.21s
zip 1,001,115,552 1.16% 1m25.20s 1,001,115,578 1.16% 0m43.08s
tar5 1,002,033,800 1.07% 0m41.57s
tar6 1,286,754,629 -27.04% 0m50.48s
compress7 1,286,754,567 -27.04% 1m32.40s 1,286,754,629 -27.04% 0m50.10s


1Salvo que se indique otra cosa, se empleó la opción de mayor compresión que la utilería ofrece.
2Salida del comando time etiquetada como “Real“.
3Usando la opción -9.
4Usando la opción -e.
5Usando la opción -z.
6Usando la opción -Z.
7Se necesitó hacer uso de la opción -f.

Resultados de esto:

  • La opción -Z del comando tar hace uso de compress. Así los resultados de tar -Z y compress coinciden.
  • compress es quien ofrece la peor razón de compresión.
  • xp -9 proporciona la mejor razón de compresión pero requiere un tiempo 333% mayor al que requiere bzip2 -9.
  • La deferencia de xy -9 y bzip2 -9 es de 1.5% en favor de xy.

Conclusiones

Aún para el caso de archivos que ya presentan un cierto nivel de compresión es posible obtener una reducción adicional con algunas de las utilerías disponibles en muchos unix y definitivamente conviene olvidarse del famoso compress(salvo por alguna cuestión de compatibilidad histórica, más que nada). Como muestra la tabla, es preferible hacer uso de bzip2. Esto es porque si bien xp ofrece cierto nivel de compresión bzip2 adicional, el tiempo empleado es considerablemente menor. Claro, si el tiempo no es problema, definitivamente la mejor relación de compresión será lo que uno buscará.

La tabla nos muestra que los tiempo son menores creado primero el archive (i.e., “creando el tar“) pero estos resultados son sólo para el tiempo de compresión. No toman en cuenta el tiempo de elaboración del tar, por lo que este criterio no puede emplearse como elemento de decisión.

Aunque estamos aquí presentando resultados que evaluamos en tiempo o espacio, nuestras variables de decisión, debemos considerar el espacio disponible en los dispositivos de almacenamiento. Si este espacio es insuficiente para crear el tar y después compactarlo, la mejor opción es llevar a cabo estas acciones simultáneamente, de esta forma el espacio de trabajo requerido no debería ser mayor que el espacio del archivo compactado que quede al final.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s