De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Herbert G. Fischer
Data de Publicação: 07 de Maio de 2004
Sobre a dica que eu enviei à Dicas-L da compactação de arquivos, realmente funciona, mas tem um problema grave.
Esta dica eu enviei a muito tempo atrás, se não me engano à mais de um ano. Como ela "demorou" para ser publicada, eu acabei esquecendo de enviar a correção assim que descobri.
De lá para cá, percebi que algo não fazia sentido. A grosso modo qualquer compressão (sem perda) de arquivo, sugere uma eliminação da repetição de alguma informação somente se gravando quantas vezes aquilo é repetido e onde está no original. Ao concatenar trechos de texto compactados, não se está compactando o todo novamente, mas sim, apenas eliminando a repetição no trecho compactado. Ao fazer isso, somando-se cabeçalhos, informações extras, e tal, o arquivo compactado pode e provavelmente ficará maior que o arquivo original.
A dica continua valendo, mas para concatenar coisas "grandes", em que, realmente, a compressão surte algum efeito.
Um pequeno teste em shell script que pode comprovar o problema:
#!/bin/sh for i in ``seq 1 10000`` do echo compressao | gzip -f >> a.gz echo compressao >> b done
O resultado... o arquivo "a.gz" fica MAIOR que o arquivo "b". Simplesmente porque o texto "compressao" ao ser compactado pelo gzip, ficou maior que o texto sem compressao. O arquivo "a.gz" gerado é diferente de um arquivo texto com 10.000 linhas do texto compressao e compactado inteiramente. Seria o caso de compactar o arquivo "b" gerando um arquivo "b.gz" de apenas 264 bytes, contra 310.000 bytes do arquivo a.gz.
A sugestão fica por conta de NÃO utilizar esse mecanismo para registrar pequenas mensagens, mas não impede de ser utilizado para grandes textos.
Talvez alguém ache uma boa utilização disso em alguma coisa que valha mais a pena concatenar algo "grande" comprimido em uma coisa maior e já comprimida, do que descomprimir o que já está comprimido, concatenar, e comprimir novamente.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários