Entre xz, gzip y bzip2, ¿qué algoritmo de compresión es el más eficiente?

16

Entre xz, gzip y bzip2, ¿qué algoritmo de compresión proporciona el tamaño de archivo más pequeño y la velocidad más rápida al comprimir tarballs bastante grandes?

Nathan2055
fuente
'el mejor' como en 'resultando en el tamaño de archivo más pequeño'?
Hennes
No sé, estaba tratando de encontrar alguna forma de formular la pregunta para poder agregar mi examen como respuesta. Tampoco tengo idea de por qué esta cosa estaba cerrada. @Karan
Nathan2055
1
Oh, por qué estaba cerrado, es fácil. "Lo mejor" es altamente subjetivo y generalmente conduce a discusiones o respuestas no constructivas. La mejor compresión puede ser el tamaño de archivo más pequeño, la compresión más rápida, la menor potencia utilizada para comprimir (p. Ej., En una computadora portátil), la menor influencia en el sistema durante la compresión (p. Ej., Programas antiguos de una sola cadena que usan solo uno de los núcleos), ... o una combinación de todos esos
Hennes
Un artículo interesante para leer es tomshardware.com/reviews/winrar-winzip-7-zip-magicrar,3436.html (basado en Windows y centrado en 7zip, magicRAR, WinRAR y WinZip en lugar de xz, gz o bz, pero sigue siendo interesante y proporcionar información de fondo).
Hennes
@Hennes - Limpié la publicación para reemplazarla mejor con exactamente lo que estaba investigando. Además, gracias por el artículo que mencionaste, lo leeré más tarde hoy.
Nathan2055

Respuestas:

15

En mi prueba de esfuerzo, comprimí 464 megabytes de datos usando los tres formatos enumerados. Gzip devolvió un archivo de 364 MB. Bzip2 devolvió un archivo de 315 MB. Xz devolvió un archivo de 254 MB. También hice una prueba de velocidad simple:

Compresión:

1: Gzip

2: Xz

3: Bzip2 (mi ventilador estaba funcionando bastante mientras esto funcionaba, lo que indica que mi Athlon II estaba bastante tenso)

Descompresión:

1: Xz

2: Gzip

3: Bzip2

Tenga en cuenta que todas estas pruebas se realizaron con la última versión de 7-Zip.

Xz es el mejor formato para una compresión completa, mientras que Gzip es muy bueno para la velocidad. Bzip2 es decente por su relación de compresión, aunque probablemente debería usarse xz en su lugar.

Nathan2055
fuente
2
Buena investigacion. ¿Has probado las diversas opciones de nivel de compresión que ofrece (al menos) bzip2, por ejemplo bzip2 -9 <file>?
Aaron Miller
@AaronMiller - No, ¿es posible usarlos a través de 7-Zip?
Nathan2055
Parece que sí, aunque no estoy seguro en qué medida: ver dotnetperls.com/7-zip-examples , sección "Switch m".
Aaron Miller
77
Por curiosidad, ¿qué tipo de datos era el archivo de prueba?
GeminiDomino
Tenga en cuenta que diferentes tipos de datos darán como resultado diferentes tamaños comprimidos. Ver aquí para ejemplos.
Ploni
4

Hice mi propio punto de referencia en la imagen vmdk de instalación de Linux de 1.1GB:

rar    =260MB   comp= 85s   decomp= 5s
7z(p7z)=269MB   comp= 98s   decomp=15s
tar.xz =288MB   comp=400s   decomp=30s
tar.bz2=382MB   comp= 91s   decomp=70s
tar.gz =421MB   comp=181s   decomp= 5s

todos los niveles de compresión en el máximo, CPU Intel I7 3740QM, memoria 32GB 1600, origen y destino en disco RAM

Generalmente uso rar o 7z para archivar archivos normales como documentos.
y para archivar archivos del sistema utilizo .tar.gz o .tar.xz mediante file-roller o tar con las opciones -z o -J junto con --preserve para comprimir de forma nativa con tar y preservar los permisos (también alternativamente .tar.7z o .tar.rar puede ser usado)

actualización: como tar solo conserva los permisos normales y no las ACL de todos modos, también se puede usar .7z plus, además de los permisos de copia de seguridad y restauración y las ACL manualmente a través de getfacl y sefacl, que parece ser la mejor opción para el archivado de archivos o la copia de seguridad de archivos del sistema porque estará lleno preservar permisos y ACL, tiene suma de comprobación, prueba de integridad y capacidad de cifrado, el único inconveniente es que p7zip no está disponible en todas partes

Sudoer
fuente
Estudiante, ¿cuáles fueron las opciones de rar? ¿Por qué no probar lrzip by kolivas? Debería funcionar bien para imágenes de disco virtual.
osgx
Estoy migrando de RAR a Git y tarballs para mis archivos de texto y btrfs para todo lo demás; mi razón para usar RAR no es el rendimiento, lo estoy usando debido a características como el registro de recuperación, la suma de comprobación de 256 bits a nivel de archivo para cada archivo y ....
Sudoer
3

Creo que este artículo ofrece resultados muy interesantes.

http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO

Los formatos más eficientes en tamaño son xz y lzma, ambos con el parámetro -e pasado.

El algoritmo más rápido es, con diferencia, lzop y lz4, que pueden producir un nivel de compresión no muy alejado de gzip en 1.3 segundos, mientras que gzip tomó 8.1 segundos. La relación de compresión es 2.8 para lz4 y 3.7 para gzip.

Aquí hay algunos resultados que extraje de este artículo:

  • Gzip: 8.1s @ 3.7

  • lz4: 1.3s @ 2.8

  • xz: 32.2s @ 5.43

  • xz -e: 6m40 @ 7.063

  • xz: 4m51s @ 7.063

Entonces, si realmente necesita velocidad desesperadamente, lz4 es increíble y aún proporciona una relación de compresión 2.8.

Si necesita desesperadamente ahorrar el byte, xz en el nivel de compresión máximo (9) hace el mejor trabajo para archivos de texto como la fuente del núcleo. Sin embargo, es muy largo y requiere mucha memoria.

Uno bueno donde sea necesario para minimizar el impacto en el tiempo Y el espacio es gzip. Este es el que usaría para hacer copias de seguridad diarias manuales de un entorno de producción.

Johnride
fuente