Por que o XCode converte PNGs para o formato CgBI?

5

De acordo com a pesquisa feita aqui link , a conversão do Xcode de PNGs para o formato proprietário da Apple CgBI não cria uma melhoria de desempenho notável . Sua alegação é que a conversão reduz apenas a velocidade de carregamento do PNG em 1 nanossegundo.

Se isso for verdade, por que a Apple se incomoda com o formato CgBI? Alguém mais comparou o carregamento de imagens CgBI com imagens PNG regulares em dispositivos iOS para ver se elas têm um desempenho diferente?

    
por Gdeglin 23.10.2012 / 02:04
fonte

1 resposta

2

Esta postagem no blog descreve a patente que a Apple registrou para o O formato CgBI implica que a Apple pensou que havia alguns benefícios técnicos da conversão. Especificamente:

  • If the file has the CgBI header, then CRCs can be ignored
  • The RGBA pixels are written in a different order (BGRA)
  • The data is pre-multiplied if there is an alpha channel

O primeiro e último benefício têm maior probabilidade de ser valioso, mas eu não sou um especialista em gráficos.

Com a postagem exibida na sua pergunta, há uma mudança sutil de atenção na comparação de resultados.

A lista de 4 conjuntos de imagens e seus tamanhos.

  • Não otimizado (PNG) em 49,63MB
  • Xcode convertido em CgBI em 26.46MB
  • Otimização ImageOptim das imagens PNG a 16,81MB
  • Otimização de ImageAlpha + ImageOptim a 9.37MB

E há duas coisas adicionais a serem observadas. Primeiro, os segundos dois conjuntos de imagens são os resultados das rotinas de compressão deles . Segundo, eles observaram que executavam compressões repetidas (otimizações) das imagens até não obterem nenhum benefício adicional. Apesar de quererem que você acredite de outra forma, esses conjuntos de números não são comparações entre maçãs e maçãs.

Discutindo a velocidade de carregamento, eles afirmam: Although Xcode optimisation is assumed to improve decoding speed of PNG images, testing on an actual device disproves that. Xcode-optimized images were significantly slower to display.

E eles fornecem três, não quatro, conjuntos de resultados para revisar. Eles não fornecem tempos de carregamento para imagens PNG não otimizadas, eles apenas fornecem resultados para as imagens otimizadas do CgBI e do ImageOptim. Não é tão surpreendente que as otimizações de seus produtos superem o que o Xcode fornecerá.

Eles chegam a afirmar que Decoding speed appears to be correlated to image file size more than anything else . Posteriormente no artigo, eles fornecem outro link que confirma sua observação em relação ao tamanho do arquivo. Usando um pouco de lógica, podemos concluir com segurança que, se eles tivessem fornecido tempos de carregamento para as imagens PNG não otimizadas, esse seria o conjunto de desempenho mais lento, já que também era o maior conjunto de imagens.

Portanto, a base da sua pergunta é um pouco errada - a conversão do Xcode para o CgBI faz fornecer aprimoramento de desempenho devido ao tamanho menor do arquivo de imagem. Podemos dizer apenas pelo tamanho dos arquivos de imagem. Enquanto o folk do ImageOptim conseguiu chegar a 1/3 ou 1/5 do tamanho do arquivo original com vários passes, a conversão do Xcode chegou a aproximadamente 1/2 do tamanho original do arquivo em uma única passagem.

Assim, o Xcode oferece melhorias de desempenho "fora da caixa" por um fator de dois a partir de um único caminho de otimização.
Alternativas de complemento como ImageOptim existem para obter melhorias maiores, mas com um custo de rodadas adicionais de otimização.

    
por 28.11.2012 / 20:43
fonte

Tags