Para distribuir archivos a través de Internet, las siguientes cosas son generalmente una prioridad:
- Relación de compresión (es decir, qué tan pequeño hace los datos el compresor);
- Tiempo de descompresión (requisitos de CPU);
- Requisitos de memoria de descompresión; y
- Compatibilidad (qué tan extendido es el programa de descompresión)
Los requisitos de memoria de compresión y CPU no son muy importantes, ya que puede usar una máquina grande y rápida para eso, y solo tiene que hacerlo una vez.
En comparación con bzip2, xz tiene una mejor relación de compresión y un menor (mejor) tiempo de descompresión. Sin embargo, en las configuraciones de compresión que se usan típicamente, requiere más memoria para descomprimir [1] y está algo menos extendido. Gzip usa menos memoria que cualquiera de los dos.
Por lo tanto, los archivos en formato gzip y xz se publican, lo que le permite elegir:
- Necesita descomprimir en una máquina con memoria muy limitada (<32 MB): gzip. Dado, no es muy probable cuando se habla de fuentes de kernel.
- Necesidad de descomprimir las herramientas mínimas disponibles: gzip
- Quiere ahorrar tiempo de descarga y / o ancho de banda: xz
No existe realmente una combinación realista de factores que lo lleve a elegir bzip2. Por lo tanto, se está eliminando gradualmente.
Miré las comparaciones de compresión en una publicación de blog . No intenté replicar los resultados, y sospecho que algunos de ellos han cambiado (en su mayoría, espero que xz
hayan mejorado, ya que es el más nuevo).
(Hay algunos escenarios específicos donde una buena implementación de bzip2 puede ser preferible a xz: bzip2 puede comprimir un archivo con muchos ceros y secuencias de ADN del genoma mejor que xz. Las versiones más nuevas de xz ahora tienen un modo de bloque (opcional) que permite la recuperación de datos después del punto de corrupción y compresión paralela y [en teoría] descompresión. Anteriormente, solo bzip2 ofrecía estos. [2] Sin embargo, ninguno de estos es relevante para la distribución del núcleo)
1: en tamaño de archivo, xz -3
está alrededor bzip -9
. Entonces xz usa menos memoria para descomprimir. Pero xz -9
(como, por ejemplo, se usa para tarballs del kernel de Linux) usa mucho más que bzip -9
. (E incluso xz -0
necesita más que gzip -9
).
2: Cambio amplio del sistema F21: lbzip2 como implementación predeterminada de bzip2