Conheço o gzip há anos, recentemente vi o bzip sendo usado no trabalho. Eles são basicamente equivalentes ou existem prós e contras significativos para um deles em detrimento do outro?
Conheço o gzip há anos, recentemente vi o bzip sendo usado no trabalho. Eles são basicamente equivalentes ou existem prós e contras significativos para um deles em detrimento do outro?
Respostas:
Gzip e bzip2 são funcionalmente equivalentes. (Uma vez houve um bzip, mas parece ter desaparecido completamente do mundo.) Outros formatos de compactação comuns são zip, rar e 7z; esses três fazem compressão e arquivamento (empacotando vários arquivos em um). Aqui estão algumas classificações típicas em termos de velocidade, disponibilidade e taxa de compressão típica (observe que essas classificações são um tanto subjetivas, não as considere evangélicas):
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
Como você pode ver, não há um vencedor claro. Se você deseja confiar em programas que provavelmente já estão instalados, use o zip no Windows (ou, se possível, arquivos de extração automática, pois o Windows não é fornecido com nenhum deles) e gzip no unix. Se você deseja uma compressão máxima, use 7z.
Rar também tem desvantagens de que, até onde eu sei, não existe software livre que crie arquivos rar ou que possa descompactar todos os arquivos rar. Os outros formatos têm implementações gratuitas e nenhuma reivindicação de patente (séria).
bzip
desapareceu porque estava usando a codificação algorítmica patenteada. Por causa da patente, ela foi redesenhada para usar a codificação Huffman. Durante esse re-design, novos recursos e melhorias foram adicionados. A coisa fundamental que o torna um algoritmo de compactação exclusivo, porém, a transformação Burrows – Wheeler, permaneceu a mesma nas duas versões.
Até onde eu sei, o gzip é geralmente mais rápido, enquanto o bzip produz uma melhor compressão (menor).
Os algoritmos têm diferentes trocas de tempo, memória e espaço. Lembre-se de que esses algoritmos foram escritos há um bom tempo e seu smartphone tem muitas vezes mais CPU do que os desktops da época.
Sua escolha é entre universalidade (.gz) e um pouco mais de compactação (.bz2). Só você pode dizer com quem se importa mais.
Uma vantagem do .gz é que ele pode comprimir um fluxo, uma sequência em que você não pode olhar para trás. Isso o torna o compressor oficial de fluxos http. Eu precisava usar o gzip uma vez por causa disso, mas é improvável que você precise pensar sobre isso.
Aqui está uma lista de sites que testam algoritmos de compactação. Para encontrar apenas bzip e gzip, você precisará fazer algumas escavações, mas a maioria dos sites listará características dos algoritmos. Dessa forma, você pode comparar o que é importante para você, tamanho (taxa de compressão), tempo, memória, CPU.
http://www.maximumcompression.com/benchmarks/benchmarks.php
Na minha experiência, o bzip ofereceu taxas de compressão consistentemente melhores que o gzip. Além disso, com o 7zip como gerenciador e algoritmo bzip, o 7zip pode usar processadores com vários núcleos.
Por http://tukaani.org/lzma/benchmarks.html , o gzip compacta duas vezes mais rápido que o bzip2 e descompacta dez vezes mais rápido.
Por exemplo, para uso com cache s3, travis etc., onde você deseja velocidade de compactação / descompactação, não apenas tamanhos pequenos, o gzip pode ser uma boa opção.