O que é compressão/compactação de arquivos?
Por Pedro Cipoli | •
Estamos acostumados a fazer downloads de arquivos compactados com extensão .zip e .rar, formatos que diminuem significativamente o tamanho total de dados em disco e o tempo total de download. Mas você sabe como a compressão de dados funciona?
Grande parte dos arquivos em nosso computador possui informações repetidas, e a compressão não faz nada mais do que organizar e eliminar essas redundâncias. Se em um texto as palavras "Canal Tech" aparecem mais de uma vez, o algoritmo de compressão as armazena apenas uma vez e guarda a referência das posições de onde elas aparecem. Observe a frase abaixo como exemplo:
A Copa de 2014 será no Brasil. Será que o Brasil conseguirá preparar tudo o que é necessário até lá?
Observe que as palavras "Brasil", "o", "que" e "será" aparecem duas vezes, e por isso são consideradas redundantes no texto. Utilizando uma compactação baseada no dicionário LZ - um dos mais utilizados pelos softwares de compressão -, atribuímos um índice a cada palavra diferente na frase acima, como a seguir:
01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
A | Copa | de | 2014 | será | no | Brasil | que | o | conseguirá | preparar | tudo | é | necessário | até | lá |
Em seguida reescrevemos a frase com os índices do dicionário:
1 2 3 4 5 6 7. 5 8 9 7 10 11 12 9 8 14 15 16?
Veja que o texto foi reduzido de 20 para 16 palavras, o que também resulta na diminuição de seu tamanho, mas é importante lembrar que o dicionário também é armazenado junto com o arquivo. Tendo isso em mente, fica fácil descobrir porque arquivos maiores possuem um coeficiente de compactação maior, já que existem mais repetições e um aumento pouco significativo do tamanho do dicionário.
Mesmo que o simples exemplo acima nos dê uma boa noção de como a compactação funciona, na prática os algoritmos atuais são muito mais sofisticados. Os mais conhecidos, como RAR e ZIP, fazem uma análise inicial do arquivo verificando quantos padrões existem e se vale a pena utilizá-los, pois cada novo padrão exige um novo dicionário, o que pode resultar em um arquivo maior no final das contas.
Por exemplo, reparou que existem 4 repetições de "á" na frase que utilizamos como exemplo? Esse é mais um padrão que o algoritmo pode utilizar se isso resultar na redução do arquivo final.
Uma pergunta muito comum que circula pela internet é qual programa é o "melhor" para comprimir arquivos, onde dois nomes acabam sempre causando um empate: WinRAR e WinZIP. Mesmo que os dois sejam muito bons, podem apresentar resultados diferentes para arquivos diferentes, pois cada um possui seu próprio algoritmo de compactação. Mas esse valor por vezes é tão pequeno que não existe uma diferença real entre eles, sendo bastante competentes no que fazem.
Outros programas que possuem o mesmo nível de qualidade dos dois acima são o KGB Archiver, PowerArchiver e 7-zip (este último peca apenas por não ter uma interface gráfica). Todos eles trabalham tanto com compactação no formato ZIP e em RAR, com o 7-zip sendo mais recomendado para computadores com um pouco menos de recursos, além de trabalhar também no formato de compressão .7Z, algoritmo tão bom quanto os dois anteriores.
E você, qual programa utiliza para compactar/descompactar seus arquivos, qual seu favorito?