Google
 

8 de outubro de 2007

Como melhorar o espaço de Storage

Deixo aqui algumas técnicas usadas por mim para melhorar e optimizar o storage, conseguindo na compressão de PNG's resultados imediatos sem qualquer risco. Ficheiros modificados desta forma quando instalados, para além de ocuparem menos espaço, são carregados em memória mais rapidamente devendo afectar portanto a performance.

Factos:

  • a Extended rom pode ser usada para personalizar por completo a instalação de muitos modelos de Pocket PC's, no entanto tem um espaço limitado (no HTC tenho somente 8,71MB disponíveis para este fim)
  • ficheiros de imagem PNG podem regra geral ser optimizados sem qualquer perda de qualidade
  • ficheiros TSK (temas pocket pc) usam imagens que podem também ser convertidas em PNG - logo optimizados sem perda de qualidade
  • ficheiros EXE, DLL's e executáveis em geral podem ser comprimidos com UPX
Tendo por base estes factos comecei a "brincar" e consegui resultados que acho bastante satisfatórios, deixo aqui uma breve explicação do processo:

Ferramentas necessárias:
MSCEInf
UPX the Ultimate Packer for eXecutablesX
PNGOut
CabWiz (da Microsoft, incluida nas Pocket PC SDK's)

1. Decompilar CAB's
No MSCEInf, abrir o ficheiro .CAB e desactivar a opção Use Folder Names. Clicar em "Extract CAB Files with original names in a folder" e indicar o directório onde queremos ter o CAB decompilado. No directório que escolhemos ficamos com todos os ficheiros que foram usados para criar o CAB, e ainda um ficheiro .INF com as defenições necessárias para recriar o CAB

2. Optimizar PNG's
com a ferramenta PNGOut, podemos obter o tamanho mínimo possível dos PNG's usando a opção /kp. Num directório podemos automatizar o processo usando a sintaxe:
for %i in (*.png) do pngout "%i" /kp
3. Optimizar executáveis e livrarias (EXE e DLL)
Usando o UPX com a seguinte sintaxe:
upx *
(atenção que os ficheiros comprimidos desta forma, ao serem executados ocupam ligeiramente mais memória, portanto devem ponderar os reais benefícios)

4. Recriar CAB's
Usando o cabwiz, podemos recriar um projecto com a seguinte sintaxe:
cabwiz nomeficheiro.inf /compress
Usando os passsos aqui descritos eis alguns valores reais:
HomePluginWM6.cab
original: 2.014.447
optimizado: 1.243.825

JUVS_HTC_CommManager_Kaizer_Fix.cab
original: 1.213.487
optimizado: 347.159

Htc_New_Default.tsk original
original: 106.828
optimizado: 44.835

nota: os ficheiros TSK são estruturalmente iguais aos CAB mas renomeados - logo é possível usar o mesmo processo. No caso concreto do exemplo que referi, continha 4 imagens em formato GIF que converti directamente para PNG usando PNGOut, também tive que editar o INF para que reflectisse a mudança de GIF para PNG antes de criar o CAB. (espero não ter baralhado ninguém mas se baralhei indiquem nos comentários que tentarei esclarecer).

Artigos relaccionados por categorias



Sem comentários: