Comprimir um arquivo de 1GB em 200_MB?

2

Então, acabei de fazer o download do MySQL para Windows 64 bits, o que 211,9 MB , mas quando o extraí, agora é 1,05 GB . Como eles fizeram isso? Eles arquivaram não foram danificados nem corrompidos.

Antes (comprimido):

Depois:(descompactado):

Eu estava totalmente surpreso, achei que isso não era possível. Informações de arquivo do WinRar:

    
por Jürgen Paul 19.02.2013 / 14:35

4 respostas

7

A taxa de compactação usada pode depender dos arquivos que estão sendo compactados. Um arquivo de texto com um milhão "ABC" provavelmente terá uma taxa de compactação muito boa. Além disso, eles provavelmente escolheram um bom algoritmo de compressão e as configurações mais altas possíveis.

    
por 19.02.2013 / 14:39
4

Deflate é um dos algoritmos de compressão mais usados. Ele procura padrões nos dados e os armazena em um dicionário. Quanto mais "repetitivo" for um arquivo, mais ele poderá ser compactado. Uma explicação muito boa do algoritmo pode ser encontrada aqui .

    
por 19.02.2013 / 15:03
2

Arquivos diferentes podem ser compactados em tamanhos diferentes.
Por exemplo, se você compactar arquivos de bitmap ou de texto, obterá resultados altos.
Também depende do programa compressor e seu método de compressão (basta usar 7Zip em vez de WinRAR e você verá que ele comprime muito melhor).

Recentemente, encontrei o KGB Archiver , que é provavelmente a melhor ferramenta de alta compactação para hoje.
Eu não podia acreditar que o arquivo cujo tamanho é ~ 1GB pode ser compactado para alguns MBs , mas poderia fazê-lo !!
Portanto, o arquivo compactado de 19% parece nada comparado a ele;)
Ele usa o algoritmo PAQ6 , portanto, ele precisa de muito CPU e RAM para compactar.
Agora é um projeto de código aberto e está localizado no SourceForge. Você pode baixá-lo aqui .

    
por 19.02.2013 / 15:20
1

Sua pergunta me inspirou a fazer algumas pesquisas e aprender um pouco sobre os trabalhos de compactação.

Como eles fizeram isso? Basicamente, muitas matemática épica , mas um método básico é Codificação de Huffman

O arquivo é dividido em partes. Essas partes são classificadas em uma árvore , com as mais comuns blocos recebendo os nomes de localização mais curtos na árvore. O zip é criado a partir de uma descrição da árvore, seguida de uma lista de endereços na árvore necessária para reconstruir o arquivo. Às vezes, uma árvore pré-computada é usada, o que elimina a necessidade de compartilhar a árvore. Quanto mais repetitivo o programa, menor a árvore e melhor a compressão. Há muito mais do que isso, entretanto, é complicado.

    
por 19.02.2013 / 19:06