Per la distribuzione di archivi su Internet, le seguenti cose sono generalmente una priorità:
- Rapporto di compressione (ovvero, quanto è piccolo il compressore rende i dati);
- Tempo di decompressione (requisiti CPU);
- Requisiti di memoria di decompressione; e
- Compatibilità (quanto è diffuso il programma di decompressione)
I requisiti di memoria di compressione e CPU non sono molto importanti, perché è possibile utilizzare una macchina veloce di grandi dimensioni per questo, e devi farlo solo una volta.
Rispetto a bzip2, xz ha un rapporto di compressione migliore e un tempo di decompressione (migliore) inferiore. Tuttavia, con le impostazioni di compressione generalmente utilizzate, richiede più memoria per decomprimere [1] ed è in qualche modo meno diffuso. Gzip utilizza meno memoria di entrambi.
Quindi, vengono pubblicati sia gli archivi in formato gzip che xz, che consentono di scegliere:
- È necessario decomprimere su una macchina con memoria molto limitata (<32 MB): gzip. Dato, non molto probabilmente quando si parla di sorgenti del kernel.
- È necessario decomprimere gli strumenti minimi disponibili: gzip
- Vuoi risparmiare tempo di download e / o larghezza di banda: xz
Non esiste davvero una combinazione realistica di fattori che ti inducano a scegliere bzip2. Quindi viene gradualmente eliminato.
Ho esaminato i confronti di compressione in un post sul blog . Non ho tentato di replicare i risultati e sospetto che alcuni di essi siano cambiati (principalmente, mi aspetto che xz
sia migliorato, essendo il più recente).
(Ci sono alcuni scenari specifici in cui una buona implementazione di bzip2 può essere preferibile a xz: bzip2 può comprimere un file con molti zeri e sequenze di DNA del genoma meglio di xz. Le versioni più recenti di xz ora hanno una modalità di blocco (opzionale) che consente il recupero dei dati dopo il punto di corruzione, compressione parallela e [in teoria] decompressione. In precedenza, solo bzip2 offriva questi. [2] Tuttavia nessuno di questi è rilevante per la distribuzione del kernel)
1: nelle dimensioni dell'archivio, xz -3
è in giro bzip -9
. Quindi xz utilizza meno memoria per decomprimere. Ma xz -9
(come, ad esempio, usato per i tarball del kernel Linux) ne usa molto di più bzip -9
. (E ha xz -0
bisogno anche di più di gzip -9
).
2: F21 Modifica a livello di sistema: lbzip2 come implementazione predefinita di bzip2