Quais são algumas taxas de compressão sem perdas típicas?

8

Um cliente estava tentando me enviar 250 GB de arquivos. Depois de tentar várias maneiras de compartilhar os dados, ele me enviou uma pasta compactada com apenas 4 GB de tamanho. Parece muita compressão para mim - não acho que, quando fechei as coisas, reduzi mais de 20% do tamanho.

Quais são algumas taxas típicas de compressão sem perdas que se poderia ver na prática? (Ou, alternativamente, um intervalo.)

ATUALIZAÇÃO: Eu sei que é impossível dizer sem ser capaz de adivinhar o conteúdo real das informações, então talvez essa seja uma pergunta incorreta. Não consigo compartilhar os dados do cliente. Mas olhando para os XMLarquivos, há muitas frases repetidas, por exemplo

<thing>
    <property="1" value="2" />
    <property="3" value="4" />
    <property="5" value="6" />
    <property="7" value="8" />
    <property="9" value="10" />
    <property="11" value="12" />
    <property="13" value="14" />
</thing>

o que parece bastante compressível.

isomorfismos
fonte
5
Acabei de criar um arquivo de 1 GB de todos os bytes nulos e compactado em um arquivo zip de 1 MB, para uma taxa de compactação de 900: 1. (Compactá-lo para a frase 1000000000 null bytesseria uma taxa de compactação de 50.000.000: 1.) #
27891
A proporção que você mencionou 250: 4 parece possível, considerando a fonte (arquivo de texto) que você enviou aqui.
precisa saber é

Respostas:

3

Meu trabalho de pesquisa sobre compactação, "Uma pesquisa sobre abordagens arquitetônicas para compactação de dados em sistemas de cache e memória principal" , mostra que a maioria das técnicas práticas em benchmarks gerais alcançam taxa de compactação ~ 2X e algumas até 4X, embora um potencial mais alto (por exemplo, ~ 16X em alguns casos) (consulte a Seção 2.2). A razão para não atingir todo o potencial é que as técnicas com maior taxa de compactação também têm maior sobrecarga (por exemplo, hardware extra que consome energia, muito processamento extra etc.) ou podem não ser suficientemente genéricas (por exemplo, compactar arquivos com todos os zeros).

user984260
fonte
8

Realmente depende da quantidade de redundância existente nos dados. Se todos os 250 GB fossem apenas '0', você poderia obter níveis fabulosos de compactação.

Esta página mostra alguns resultados para compactação de texto em inglês. Ele comprime 2.988.578 bytes de texto usando várias técnicas. Os três principais são: 330.571 (88,94%), 333.759 (88,83%) e 352.722 (88,20%).

Relacionando isso de volta ao seu caso: isso significa que 250 GB seriam compactados (na melhor das hipóteses) para 27,65 GB.

Então, talvez haja muitos patches repetitivos em branco nos dados?


ATUALIZAR:

Com base na sua edição, aqui está outro artigo que analisa as taxas de compactação XML . O resultado (Figura 8; captura de tela abaixo) é que eles parecem ver taxas de compressão variando de 1 (nenhuma) a cerca de 50 no máximo. Isso sugere que você está certo em suspeitar da taxa de compactação de 62,5 a 1 (250 a 4) do seu cliente.

insira a descrição da imagem aqui

Peter K.
fonte
Ótima resposta Peter e @endolith. Atualizei a pergunta com base nas suas respostas. Muito útil.
Isomorphismes