Qual é o tamanho maior para o qual um gzip (digamos 10kb por exemplo) pode ser descompactado?
fonte
Qual é o tamanho maior para o qual um gzip (digamos 10kb por exemplo) pode ser descompactado?
Depende muito dos dados que estão sendo compactados. Um teste rápido com um arquivo de 1Gb cheio de zeros fornece um tamanho compactado de ~ 120Kb, para que seu arquivo de 10Kb possa potencialmente se expandir para ~ 85Mbytes.
Se os dados têm baixa redundância para começar, por exemplo, o arquivo contém arquivos de imagens em um formato compactado nativamente (gif, jpg, png, ...), então o gzip pode não adicionar mais nenhuma compactação. Para arquivos binários, como executáveis de programas, você pode ver a compactação de até 2: 1, para texto sem formatação, HTML ou outras marcações de 3: 1 ou 4: 1 ou mais não é improvável. Você pode ver 10: 1 em alguns casos, mas o ~ 8700: 1 visto com um arquivo preenchido com um único símbolo é algo que você não verá fora de circunstâncias artificiais semelhantes.
Você pode verificar quantos dados resultariam da descompactação de um arquivo gzip, sem realmente gravar seu conteúdo descompactado no disco, com gunzip -c file.gz | wc --bytes
- isso descompactará o arquivo, mas não armazenará os resultados, passando-os para o wc
que contará o número de bytes à medida que eles passam depois descarte-os. Se o conteúdo compactado for um arquivo tar que contém muitos arquivos pequenos, você poderá perceber que é necessário muito mais espaço em disco para descompactar o arquivo completo, mas, na maioria das circunstâncias, a contagem retornada da gunzip
saída da tubulação wc
será tão precisa quanto você precisa.
phpinfo()
, compacta muito bem. As informações técnicas contidas nessa saída contêm repetição mais direta do que a parte média da linguagem natural também, e a distribuição do alfabeto é provavelmente menos suave, o que poderia ajudar o estágio Huffman a obter melhores resultados.Geralmente, você não obtém mais de 95% de compactação (para que os dados compactados em gps de 10kB sejam descompactados para ~ 200kB), mas existem arquivos especialmente criados que se expandem exponencialmente. Procure
42.zip
, ele descompacta para alguns petabytes de dados (sem sentido).fonte
Citado literalmente em https://stackoverflow.com/a/16794960/293815
A taxa máxima de compactação do formato de desinflar é 1032: 1. Isso ocorre porque a execução mais longa que pode ser codificada é de 258 bytes. São necessários pelo menos dois bits para cada execução (um bit para o código de comprimento e um bit para o código de distância); portanto, 4 * 258 = 1032 bytes não compactados podem ser codificados por um byte compactado.
Você pode obter mais compactação pressionando o resultado do gzip. Normalmente isso não melhora a compactação, mas por muito tempo é possível.
A propósito, a abordagem LZ77 usada pelo deflate é mais geral do que a codificação no comprimento da execução. Em vez de apenas um comprimento, é usado um par de comprimento / distância. Isso permite copiar uma string de alguma distância atrás, ou replicar um byte como no comprimento de uma distância de uma ou replicar triplos de bytes com uma distância de três, etc.
fonte
A taxa de compactação de qualquer algoritmo de compactação será uma função dos dados que estão sendo compactados (além do comprimento desses dados).
Aqui está uma análise em MaximumCompression ,
veja uma das amostras, como
Resumo dos testes de referência de compactação de arquivos múltiplos
fonte
Um arquivo enorme contendo apenas um símbolo será compactado muito bem.
fonte
10 MB de zeros no arquivo, compacte com gzip -9 a 10217. A proporção máxima parece estar em torno de 1000x.
fonte
A resposta para sua pergunta depende da entrada. Para ter uma idéia de como a compactação é feita, assista aos vídeos de seis minutos.
https://www.youtube.com/watch?v=ZdooBTdW5bM
O que você deve obter disso é que a taxa de compactação depende da frequência de cada caractere; portanto, não há taxa máxima de geração, depende da entrada; para o texto em inglês é de cerca de 65%.
fonte