As imagens PNG mais compactadas demoram mais para serem carregadas?

3

Quando eu crio arquivos PNG com tamanho de disco muito pequeno, tenho a tendência de me perguntar se o tamanho do arquivo se torna menos importante do que o tempo que os espectadores precisariam para descompactar a imagem. Tecnicamente isso também seria trivial, mas eu me perguntei sobre isso há muito tempo. Todos nós sabemos que as imagens PNG mais comprimidas demoram mais tempo a comprimir, mas demoram mais tempo a descomprimir?

Não sei se essa informação afeta a pergunta, mas estou pensando sobre isso em relação a arquivos de tipo de ícone (que são pequenos porque contêm poucos pixels) e arquivos de linha de arte enormes (que são pequenos porque eles compactam seus pixels de forma muito eficaz).

EDIT: Em resposta às respostas que recebi, quero observar que isso não é estritamente um problema de rede. Os usuários do Windows podem não perceber isso, mas a maioria dos ícones usados pelo ambiente de área de trabalho é armazenada com compactação PNG, e dezenas deles precisam ser renderizados quando o sistema é iniciado. A enorme linha de arte a que me referi era principalmente papéis de parede como os do link , mas vários cartazes, recursos de videogame e outras coisas também encaixar essa descrição.

    
por Wutaz 12.04.2014 / 20:43

3 respostas

1

Imagens com melhor compactação (ou seja, com um tamanho de arquivo menor) geralmente devem levar menos tempo para carregar do que a mesma imagem com um tamanho maior.

Se você quiser minimizar o tamanho do arquivo ao salvar um arquivo PNG, o sacrifício ocorrerá no tempo necessário para compactar o arquivo.

O PNG compacta dados de imagem com DEFLATE (o mesmo algoritmo usado em zlib e PKZIP). Uma maneira pela qual o DEFLATE economiza espaço é codificar seqüências de bytes recorrentes fornecendo apenas um comprimento de execução e uma distância de volta para o local em que apareceu anteriormente no fluxo. (por exemplo, A B C D E F A B C A B C D poderia ser codificado como A B C D E F [3,-6] [4,-9] . (Ele também poderia codificá-lo como A B C D E F [3,-6] [3,-3] D .)

O compressor tem que usar um algoritmo para procurar sequências correspondentes antes que ele possa codificá-las. Algoritmos variam, mas muitos deles podem ser feitos para trabalhar mais ou ir mais rápido usando certos parâmetros. Quando um algoritmo trabalha mais, ele pode encontrar mais ou mais correspondência, o que geralmente resulta em melhor compactação, mas levará mais tempo para isso.

Por outro lado, o algoritmo de descompressão é muito simples e não precisa fazer muito trabalho - ele simplesmente decodifica o fluxo de maneira bastante linear e não precisa procurar por correspondências, pois elas são fornecidas pelo compressor. - apenas procura os códigos de comprimento / distância fornecidos a ele.

Geralmente, quanto menos bits forem lidos, mais rápida será a descompressão do PNG.

    
por 06.12.2014 / 06:15
1

Eu fiz um pequeno experimento para você - não é perfeito, mas deve dar algumas informações sobre o escopo do problema.

Encontrei um grande arquivo PNG on-line, abri-o no GIMP e salvei 2 versões dele - 1 com nível de compactação 9 (muito pequeno) e 1 com nível de compactação 0 (grande).

O arquivo altamente compactado era de 1,8 megas, o png levemente comprimido era de 4,7 megas. A imagem foi algo que peguei no Google e era uma foto de um aglomerado de estrelas.

Eu então escrevi um script para converter a imagem de png para tif (na suposição de que o TIF é um formato de arquivo relativamente descompactado de forma bastante rápida) 200 vezes e a saída foi cronometrada. Em cada caso, executei o script rapidamente e aborte-o após alguns segundos para que qualquer cache do sistema entre em vigor antes de executar o teste completo, reduzindo assim o impacto do disco io (e meu computador usa SSD, o que também minimiza esse impacto. Os resultados foram os seguintes:

Converting the small file 200 times - 1 minute, 16.07 seconds
Converting the large file 200 times - 1 minute, 22.39 seconds

Assim, um arquivo altamente compactado parece ter cerca de 10 lentas para descompactar, em seguida, um arquivo levemente compactado.

Mas isso não leva em conta o tempo gasto para baixar o arquivo. Isso dependerá, é claro, da velocidade de sua conexão, da distância até o servidor e do tamanho do arquivo. Se demorar mais de 0,5 segundos para transmitir o arquivo grande, então o arquivo pequeno, então (no meu sistema - que é um ultrabook mais antigo, tão lento, dando um cenário conservador), é melhor enviar o arquivo mais altamente comprimido. Arquivo. Nesse caso, isso significa enviar 5,8 megabytes por segundo, o que equivale a aproximadamente 60 megabits por segundo, excluindo os problemas de latência.

Conclusão para arquivos grandes - se você estiver em uma LAN levemente usada, é provavelmente mais rápido usar a imagem menos compactada, mas quando você acessa a Internet mais ampla usando o arquivo mais altamente compactado é melhor.

BTW, estou reexecutando os testes com 1000 iterações, atualizarei meu post assim que tiver esses números - espero que sejam bem parecidos.

    
por 12.04.2014 / 22:23
-1

Não, na verdade tudo o que você precisa fazer é extrair um png de 64 pixels e um jpg de 64 pixels para ver como o tempo que leva para descomprimir é infinitesimalmente minúsculo para ser inconsequente ... bem antes de você perceber que você está gastando muito tempo pensando sobre isso. :) Porque estamos falando de imagens tão pequenas envolvidas nos pixels que compõem um ícone. À medida que aumenta o tamanho, o jpg como um formato com perdas não preservará a imagem também. É aí que png como um formato sem perdas realmente brilha.

Tecnicamente falando, você está certo sobre a fração da melhoria de desempenho em milissegundos que você teria de aproveitar para não ter que descompactar um formato sem perdas como png, é que essa fração provavelmente não fará muito com você. bom porque você não vai poder fazer nada com o tempo que você salvou. O jpg é útil apenas porque ainda pode reter 90% de sua qualidade em 64 pixels, embora se reduza a uma pequena fração de seu detalhe original, é muito pequeno para ser notado. O PNG é quase tão conveniente quanto sua qualidade como um formato sem perdas não sofre de forma alguma, tornando-se a opção IMO muito superior.

Alguma razão pragmática por trás do motivo de você ter pensado nisso por tanto tempo?

Por isso, ajudaria ter uma ideia melhor do que você considera 'enormes arquivos de lineart' se você tivesse alguma dúvida legítima sobre aonde estava indo com isso.

    
por 12.04.2014 / 21:12