jueves, octubre 18, 2007

Comparación de Compresores

En mi trabajo, surgió la necesidad de pasar una base de datos de unos cuantos GigaBytes por la red. Estuvimos buscando compresores, que fueran rápidos (sobre todo) y que el ratio de compresión fuera bueno. Busque en la web reviews, benchmarks, etc. encontre un motón pero no me convenció ninguno, entonces nos planteamos hacer uno nosotros.
Aquí les dejo nuestro benchmark:

Los utilitarios utilizados fueron:
  • gzip-1.3.12-bin.zip (Windows binaries - Proyecto GnuWin32)
  • bzip2-1.0.4-bin.zip (Windows binaries - Proyecto GnuWin32)
  • arj-3.10.22-bin.zip (Windows binaries - Proyecto GnuWin32)
  • lzop101w.zip (Windows binaries - http://www.oberhumer.com/opensource/lzop/)
  • rar(Windows binaries - RAR 3.51 Alexander Roshal Versión shareware)
  • 7za(Windows binaries - 7-Zip Command line version 4.17 beta)
Los siguientes tests fueron realizados sobre:
  • Windows 2003 Server Enterprise Edition Service Pack 1
  • Intel(R) Xeon(TM) CPU 3.0 GHz (2 Procesadores - Dual Core) - 4 GB RAM

Test 1

Tamaño de Archivo : 4.66 gb (basededatos.db)
  • lzop -1
    • 866 mb / 3 min
    • Soporta mover. No soporta volúmenes.
  • gzip
    • 621 mb / 5 min
    • Soporta mover. No soporta volúmenes.
  • rar
    • 525 mb / 9 min
    • Soporta volúmenes y mover.
  • 7za
    • mucho tiempo
    • Soporta volumenes y mover.
  • bzip2
    • mucho tiempo
    • Soporta mover. No soporta volumenes.
  • arj
    • descartado
    • No soporta archivos grandes.
Test 2

Tamaño de Archivo: 29.0 GB (basededatos2.db)

  • rar
    • 3.47 GB / 49 min
  • gzip
    • 4.34 GB / 36 min
  • lzop -1
    • 6.02 GB / 25 min

Test 3 (Test Compresion de directorios y archivos.)

Tamaño de Archivo: 44.5 Gb (/db/produccion)
  • rar
    • Opcion -m0. Con volumenes. Mucho espacio. Imposible de usar
    • Opcion -m1. Con volumenes.
      • 6.07 Gb / 80 min
  • gzip
    • 7.11 Gb / 66 min
    • Un archivo gz por archivo original.

Estas mismas pruebas las hice en otra oportunidad sobre Linux, y los resultados fueron un tanto diferente. Evidentemente que existe un problema de plataforma aquí. Ejemplo hacer tar | gzip, fue imposible, ya que Windows tiene serios problemas con los pipes.

Conclusión

Al final la elección fue RAR, ya que el tamaño fue menor que el gzip, demoró un poco más pero soporta volúmenes, y es una buena característica que buscábamos.

No hay comentarios.: