Mais exemplos para testar

Mais exemplos para testar

por Luciano Ramalho -
Número de respostas: 8
Além dos arquivos enviados pelo Henrique Stagni (no final desta discussão), fiz testes com estes arquivos de imagens:

http://ramalho.org/usp/mac0110/imagens/brasil.svg
http://ramalho.org/usp/mac0110/imagens/brasil.svg.lz

http://ramalho.org/usp/mac0110/imagens/brasil.bmp
http://ramalho.org/usp/mac0110/imagens/brasil.bmp.lz

http://ramalho.org/usp/mac0110/imagens/brasil.tif
http://ramalho.org/usp/mac0110/imagens/brasil.tif.lz


http://ramalho.org/usp/mac0110/imagens/brasil.gif.lz


http://ramalho.org/usp/mac0110/imagens/brasil.png.lz

Observe que nos primeiros três casos o arquivo comprimido fica menor que o arquivo original, mas nos dois últimos não. Isso é porque os formatos SVG, BMP e TIF não têm compressão (nas variantes que eu escolhi para gerar as imagens), mas os formatos GIF e PNG já são comprimidos e utilizam um algoritmo mais eficiente que o LZ77.

Para visualizar o SVG, é preciso usar o Firefox. SVG é um dialeto de XML, portanto o conteúdo do arquivo é texto. Os demais formatos são binários.

[ ]s
Luciano

Em resposta à Luciano Ramalho

Re: Mais exemplos para testar

por Henrique Stagni -

Qual o resultado de vcs? Minha gif e o png comprimidos deram quase o dobro do original...


brasil.svg
15.91%
brasil.bmp
72.54%
brasil.tif
93.58%
brasil.gif
-98.68%
brasil.png
-94.04%
Em resposta à Henrique Stagni

Re: Mais exemplos para testar

por Luciano Ramalho -
Obtive exatamente os mesmos numeros que vc, Henrique.

Eu já estava esperando que a compressão do GIF e do PNG não iria dar bons resultados, porque o GIF já é comprimido com LZW e o PNG é comprimido com DEFLATE. Tanto o LZW quanto o DEFLATE são mais eficientes que o LZ77. Um arquivo bem comprimido sempre tem pouquíssima redundância, por definição, o que faz com que o LZ77 se comporte mal.

Você pode colocar os seus arquivos comprimidos em algum lugar que a gente possa acessar? Os meus estão lá, com a extensão .lz.

Notei uma diferença entre o formato dos seus arquivos comprimidos anteriores (biblia etc.) e os que eu estou gerando. Os tamanhos são idênticos, ou seja, não há diferença na compressão. E a minha função de descompressão funciona normalmente com os seus arquivos e os meus.

Entretanto os arquivos não são binariamente identicos, e eu tenho uma teoria (ainda não comprovada): você e eu estamos procurando repetições no dicionário em direções diferentes, então quando determinado padrão ocorre duas vezes no dicionário nós estamos registrando distâncias diferentes. Isso acaba não fazendo diferença na hora da descompressão, porque tanto faz copiar uma ou outra sequencia repetida do dicionário, desde que as duas tenham o mesmo tamanho.

Valeu!

--
Luciano
Em resposta à Luciano Ramalho

Re: Mais exemplos para testar

por Henrique Stagni -
vlw...

Sim, acabei de ver essa mesma diferença com outras pessoas daki. Estou verificando as repeticoes (por algum motivo) de traz pra frente. Além disso podem haver diferencas quando verificamos se o comprimento atual é maior que o  "maior comprimento visto até agora": tanto usando ">" como ">=" funciona , mas podem haver diferenças se houver mais de uma ocorrencia  no dicionário.
Entao aqui estao meus resultados:

http://www.linux.ime.usp.br/~hstagni/brasil.jpg.lz
http://www.linux.ime.usp.br/~hstagni/brasil.tif.lz
http://www.linux.ime.usp.br/~hstagni/brasil.svg.lz
http://www.linux.ime.usp.br/~hstagni/brasil.png.lz
http://www.linux.ime.usp.br/~hstagni/brasil.gif.lz

http://www.linux.ime.usp.br/~hstagni/brasil.jpg.lz.par
http://www.linux.ime.usp.br/~hstagni/brasil.tif.lz.par
http://www.linux.ime.usp.br/~hstagni/brasil.svg.lz.par
http://www.linux.ime.usp.br/~hstagni/brasil.png.lz.par
http://www.linux.ime.usp.br/~hstagni/brasil.gif.lz.par




Em resposta à Henrique Stagni

Re: Mais exemplos para testar

por Luciano Ramalho -
A troca do operador > pelo >= pode causar o mesmo efeito, sem que haja diferença no sentido da varredura.

Considere que existem duas ocorrências da sequência mais longa no dicionário.

Se você registrar a posicao quando a sequência for estritamente mais longa do que a mais longa até agora, então ficará registrada a posição da primeira ocorrência encontrada. Mas se você registrar a posição quando a sequência tiver comprimento igual ou maior, então ficará registrada a posição da última ocorrência encontrada.

O mais interessante é que isso não faz nenhuma diferença para a rotina de descompressão.

--
Luciano
Em resposta à Luciano Ramalho

Re: Mais exemplos para testar

por Henrique Stagni -
Então... talvez valha um pouco mais apenas encontrar pares mais pertos do inicio do vetor janela pq de acordo com o núemro de digitos de (dist) , o tamanho do arquivo de texto legível com os pares muda. Imagino que possa ser uma diferença perceptível com arquivos muito grandes
Em resposta à Henrique Stagni

Re: Mais exemplos para testar

por Luciano Ramalho -
Acabei de comprovar: era exatamente a diferença do operador > para o >= que estava causando a diferença entre os nossos arquivos comprimidos.

Boa discussão, Henrique!

--
Luciano
Em resposta à Henrique Stagni

Re: Mais exemplos para testar

por Luciano Ramalho -
No final, adotei a sua convenção, Henrique. Porque escolhendo as distâncias menores o arquivo de pares fica mais fácil de conferir manualmente.

Valeu!

--
Luciano