A capacidade de compactar nossos arquivos para facilitar o compartilhamento e / ou o transporte deles pode A vida electrónica é muito mais fácil, mas por vezes podemos ver resultados de tamanhos estranhos ou inesperados depois de os compactarmos. Por que é que? A postagem de perguntas e respostas do SuperUser de hoje tem as respostas para as perguntas de um leitor confuso.
A sessão de perguntas e respostas de hoje nos é oferecida por SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas.
Foto cedida por Jean-Etienne Minh-Duy Poirrier (Flickr).
SuperUser reader sixtyfootersdude quer saber porque o zip é capaz de compactar arquivos individuais melhor do que vários arquivos com o mesmo tipo de conteúdo:
Suponha que eu tem 10.000 arquivos XML e deseja enviá-los para um amigo. Antes de enviá-los, gostaria de compactá-los.
Método 1: Não compactá-los
Resultados:
Método 2: Compactar cada arquivo separadamente e enviá-lo 10.000 arquivos XML compactados
Comando:
Resultados:
Método 3: Criar um único arquivo Zip contendo todos os 10.000 arquivos XML
Comando:
Resultados:
Método 4: Concatenar os arquivos em um único arquivo e Zip It
Comando:
Resultados:
Perguntas
- Por que obtenho resultados tão melhores quando estou apenas fechando um único arquivo?
- Esperava obter resultados drasticamente melhores usando o método 3 em vez do método 2, mas não. Por que isso é
- Este comportamento é específico para zip? Se eu tentasse usar o Gzip, obteria resultados diferentes?
Informações Adicionais
Meta Data
Uma das respostas dadas sugere que a diferença são os metadados do sistema armazenados no arquivo zip. Eu não acredito que isso possa ser o caso. Para testá-lo, fiz o seguinte:
O arquivo zip resultante é de 1,4 MB. Isso significa que ainda há aproximadamente dez MB de espaço inexplicado.
Por que o zip é capaz de compactar arquivos individuais melhor do que vários arquivos com o mesmo tipo de conteúdo?
têm a resposta para nós. Primeiro, Alan Shutko:
A compactação Zip é baseada em padrões repetitivos nos dados a serem compactados, e a compactação fica melhor quanto mais tempo o arquivo estiver, pois mais e mais padrões podem ser encontrados e usados.
Simplificado, se você compactar um arquivo, o dicionário que mapeia códigos (curtos) para padrões (mais longos) é necessariamente contido em cada arquivo zip resultante; se você zipar um arquivo longo, o dicionário é reutilizado e se torna ainda mais eficaz em todo o conteúdo.
Se seus arquivos são um pouco parecidos (como o texto sempre é), a reutilização do 'dicionário' se torna muito eficiente. o resultado é um arquivo zip total muito menor.
Seguido pela resposta de Aganju:
Em zip, cada arquivo é compactado separadamente. O oposto é compactação sólida , ou seja, os arquivos são compactados juntos. 7-zip e Rar usam compactação sólida por padrão. Gzip e Bzip2 não podem comprimir múltiplos arquivos, então o Tar é usado primeiro, tendo o mesmo efeito da compressão sólida
Como os arquivos xml têm estrutura similar (e provavelmente conteúdo similar), se os arquivos forem compactados juntos a compressão será maior
Por exemplo, se um arquivo contiver a string “
” e o compressor já encontrar essa string em outro arquivo, ele será substituído por um pequeno ponteiro para a correspondência anterior. Se o compressor não usar compactação sólida, a primeira ocorrência da string no arquivo será registrada como um literal , que é maior.
Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.
Por que o Meu Windows 10 Home Edition possui Área de Trabalho Remota e BitLocker?
Não é segredo que os Home Editions dos sistemas Windows tiveram alguns recursos removidos ou tornados inacessíveis sem uma atualização, portanto Por que uma pessoa veria recursos supostamente não incluídos? A postagem de perguntas e respostas do SuperUser de hoje tem a resposta para uma pergunta confusa do leitor.
Como adicionar controles de pizza ao seu telefone Android, sem necessidade de raiz
Se você nunca usou controles de pizza no seu dispositivo Android antes, está perdendo. Os controles de torta são uma maneira única de acessar rapidamente suas teclas de navegação e outros atalhos que não ocupam espaço em sua tela - você simplesmente desliza para o lado para exibi-los. Esses controles são há muito tempo algumas ROMs personalizadas e módulos Xposed por anos, mas você não precisa passar pelo incômodo de fazer o enraizamento para obtê-los - basta baixar um aplicativo da Play Store.