Conosco gzip da anni, recentemente ho visto bzip utilizzato al lavoro. Sono sostanzialmente equivalenti o ci sono vantaggi e svantaggi significativi per uno di loro rispetto all'altro?
Conosco gzip da anni, recentemente ho visto bzip utilizzato al lavoro. Sono sostanzialmente equivalenti o ci sono vantaggi e svantaggi significativi per uno di loro rispetto all'altro?
Risposte:
Gzip e bzip2 sono funzionalmente equivalenti. (C'era una volta un bzip, ma sembra essere completamente svanito dalla faccia del mondo.) Altri formati di compressione comuni sono zip, rar e 7z; questi tre eseguono sia la compressione che l'archiviazione (comprimendo più file in uno). Ecco alcuni voti tipici in termini di velocità, disponibilità e tipico rapporto di compressione (si noti che questi voti sono in qualche modo soggettivi, non considerarli come vangelo):
decompression speed (fast > slow): gzip, zip > 7z > rar > bzip2
compression speed (fast > slow): gzip, zip > bzip2 > 7z > rar
compression ratio (better > worse): 7z > rar, bzip2 > gzip > zip
availability (unix): gzip > bzip2 > zip > 7z > rar
availability (windows): zip > rar > 7z > gzip, bzip2
Come puoi vedere, non c'è un vincitore chiaro. Se vuoi fare affidamento su programmi che probabilmente saranno già installati, usa zip su Windows (o, se possibile, archivi autoestraenti, poiché Windows non viene fornito con nessuno di questi) e gzip su unix. Se si desidera la massima compressione, utilizzare 7z.
Rar ha anche il rovescio della medaglia che, per quanto ne so, non esiste un software gratuito che crea archivi rar o che può decomprimere tutti gli archivi rar. Gli altri formati hanno implementazioni gratuite e nessuna (seria) rivendicazione di brevetti.
bzip
scomparso perché utilizzava la codifica algoritmica brevettata. A causa del brevetto, è stato riprogettato per utilizzare invece la codifica Huffman. Durante questa riprogettazione, sono state aggiunte nuove funzionalità e miglioramenti. La cosa fondamentale che lo rende un algoritmo di compressione unico, la trasformazione di Burrows-Wheeler, è rimasta la stessa in entrambe le versioni.
Per quanto ne so, gzip è complessivamente più veloce, mentre bzip produce una compressione migliore (più piccola).
Gli algoritmi hanno tempi, memoria e compromessi spaziali diversi. Tieni presente che questi algoritmi sono stati scritti un po 'di tempo fa e il tuo smartphone ha molte volte più CPU dei desktop di quei giorni.
La tua scelta è tra l'universalità (.gz) e un po 'più di compressione (.bz2). Solo tu puoi dire che ti interessa di più.
Un vantaggio di .gz è che può comprimere un flusso, una sequenza in cui non puoi guardare dietro. Questo lo rende il compressore ufficiale dei flussi http. Ho dovuto usare gzip una volta per questo, ma è improbabile che tu debba pensarci.
Ecco un elenco di siti che testano algoritmi di compressione, per trovare solo bzip e gzip dovrai fare degli scavi, ma la maggior parte dei siti elencherà le caratteristiche degli algoritmi. In questo modo puoi confrontare ciò che è importante per te, dimensioni (rapporto di compressione), tempo, memoria, CPU.
http://www.maximumcompression.com/benchmarks/benchmarks.php
Nella mia esperienza bzip ha offerto rapporti di compressione costantemente migliori rispetto a gzip. Inoltre con 7zip come gestore e algoritmo bzip, 7zip può utilizzare processori multi core.
Per http://tukaani.org/lzma/benchmarks.html , gzip si comprime due volte più velocemente di bzip2 e si decomprime dieci volte più velocemente.
Ad esempio per l'uso con la memorizzazione nella cache s3, su travis ecc., Dove si desidera velocità di compressione / decompressione, non solo di piccole dimensioni, gzip potrebbe essere un buon compromesso.