Tra xz, gzip e bzip2, quale algoritmo di compressione è il più efficiente?


16

Tra xz, gzip e bzip2, quale algoritmo di compressione fornisce la dimensione del file più piccola e la velocità più alta quando si comprimono tarball abbastanza grandi?


'il migliore' come in 'risultante nella dimensione del file più piccola'?
Hennes,

Non lo so, stavo cercando di trovare un modo per esprimere la domanda in modo da poter aggiungere il mio test come risposta. Inoltre non ho idea del perché questa cosa sia stata chiusa. @Karan
Nathan2055

1
Oh, perché è stato chiuso facile. "Best" è altamente soggettivo e di solito porta a discussioni o risposte non costruttive. La migliore compressione può essere la dimensione del file più piccola, la compressione più veloce, la minima potenza utilizzata per comprimere (ad esempio su un laptop), la minima influenza sul sistema durante la compressione (ad esempio antichi programmi a battistrada singolo che utilizzano solo uno dei core), ... o una combinazione di tutti quelli.
Hennes,

Un articolo interessante da leggere è tomshardware.com/reviews/winrar-winzip-7-zip-magicrar,3436.html (basato su Windows e focalizzato su 7zip, magicRAR, WinRAR e WinZip piuttosto che xz, gz o bz, ma comunque interessante e fornendo informazioni di base).
Hennes,

@Hennes - Ho ripulito il post per sostituirlo al meglio con esattamente quello che stavo cercando. Inoltre, grazie per l'articolo che hai citato, lo leggerò più tardi oggi.
Nathan2055,

Risposte:


15

Nel mio stress test, ho compresso 464 megabyte di dati utilizzando i tre formati elencati. Gzip ha restituito un file di 364 MB. Bzip2 ha restituito un file da 315 MB. Xz ha restituito un file di 254 MB. Ho anche fatto un semplice test di velocità:

Compressione:

1: Gzip

2: Xz

3: Bzip2 (il mio fan stava soffiando un bel po 'mentre stava succedendo, indicando che il mio Athlon II era abbastanza teso)

Decompressione:

1: Xz

2: Gzip

3: Bzip2

Tutti questi test sono stati eseguiti con l'ultima versione di 7-Zip.

Xz è il formato migliore per una compressione completa, mentre Gzip è molto buono per la velocità. Bzip2 è decente per il suo rapporto di compressione, anche se probabilmente al suo posto dovrebbe essere usato xz.


2
Buona ricerca. Hai provato le varie opzioni del livello di compressione offerte da (almeno) bzip2, ad esempio bzip2 -9 <file>?
Aaron Miller,

@AaronMiller - No, è possibile utilizzare quelli tramite 7-Zip?
Nathan2055,

Sembra così, anche se non sono sicuro fino a che punto: vedi dotnetperls.com/7-zip-examples , sezione "Switch m".
Aaron Miller,

7
Per curiosità, che tipo di dati era il file di test?
GeminiDomino,

Si noti che tipi di dati diversi comporteranno dimensioni compresse diverse. Vedi qui per esempi.
Ploni,

4

Ho fatto il mio benchmark sull'immagine vmdk di installazione Linux 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

tutti i livelli di compressione su max, CPU Intel I7 3740QM, memoria 32GB 1600, sorgente e destinazione su disco RAM

In genere uso rar o 7z per archiviare file normali come documenti.
e per l'archiviazione dei file di sistema uso .tar.gz o .tar.xz da file-roller o tar con le opzioni -z o -J insieme a --preserve per comprimere nativamente con tar e conservare i permessi (anche in alternativa .tar.7z o .tar.rar può essere utilizzato)

aggiornamento: poiché tar preserva solo le normali autorizzazioni e non gli ACL, è possibile utilizzare anche .7z più autorizzazioni di backup e ripristino e ACL manualmente tramite getfacl e sefacl che sembra essere l'opzione migliore sia per l'archiviazione dei file che per il backup dei file di sistema perché sarà pieno preservare autorizzazioni e ACL, ha checksum, test di integrità e funzionalità di crittografia, l'unico aspetto negativo è che p7zip non è disponibile ovunque


Studente, quali erano le opzioni di rar? Perché non provare lrzip di kolivas , dovrebbe funzionare bene per le immagini del disco virtuale.
Osgx,

Sto migrando da RAR a Git e tarball per i miei file di testo e btrfs per tutto il resto; la ragione per cui utilizzo RAR non è la prestazione, la sto usando per caratteristiche come record di recupero, checksum separato a 256 bit a livello di file per ogni file e ....
Sudoer,

3

Penso che questo articolo fornisca risultati molto interessanti.

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

I formati più efficienti in termini di dimensioni sono xz e lzma, entrambi con il parametro -e passato.

Gli algoritmi più veloci sono di gran lunga lzop e lz4 che possono produrre un livello di compressione non molto lontano da gzip in 1,3 secondi mentre gzip impiegava 8,1 secondi. Il rapporto di compressione è 2,8 per lz4 e 3,7 per gzip.

Ecco alcuni risultati che ho estratto da questo articolo:

  • Gzip: 8.1s @ 3.7

  • lz4: 1.3s @ 2.8

  • xz: 32.2s @ 5.43

  • xz -e: 6m40 @ 7.063

  • xz: 4m51s @ 7.063

Quindi, se hai davvero disperatamente bisogno di velocità, lz4 è fantastico e fornisce comunque un rapporto di compressione 2.8.

Se hai disperatamente bisogno di risparmiare il byte, xz al massimo livello di compressione (9) fa il lavoro migliore per i file di testo come l'origine del kernel. Tuttavia, è molto lungo e richiede molta memoria.

Un buono dove necessario per ridurre al minimo l'impatto sul tempo E sullo spazio è gzip. Questo è quello che userei per fare backup giornalieri manuali di un ambiente di produzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.