de embedding assets y peso final

Recientemente estaba tratando de optimizar un proyecto en flex (tratando de reducir el peso del swf final), ya que de todas maneras el framework the flex nos regala apróximadamente 100kb (usando algún uicomponent de la familia )
Pensábamos que el embeder el mismo asset desde diferentes mxml, nos resultaría en una swf final de mejor tamaño; estos fueron los resultados.

las pruebas concistieron en probar las diferentes formas de embeder imágenes dentro de una aplicación de flex, en estas pruebas usé el mismo jpg (16kb)


sapito tico

Prueba 1: simple embeding


Embedir una imagen de manera normal para tener el peso final de un swf "normal" (asignando el valor del embed a una variable tipo clase, y usando esta como source del objeto image)
[code]




[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var asset:Class;
]]>


[/code]
Peso del swf: 139kb (gracias por lo 123kb, adobe)

Prueba 2: embediendo la image dos veces, mismo archivo


Esta vez se embede directamente la imagen en un objeto Image, y el source del otro se hace igual que en el ejemplo anterior.
[code]




[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var asset:Class;
]]>





[/code]
Peso final del swf: 139kb

Prueba 3: mismo jpg, diferentes mxml, mismo nombre


Esta vez, utilizo el archvo en un componente externo
AssetInComponent.mxml
[code]



[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var asset:Class;
]]>


[/code]
y lo importo dentro de la aplicación principal, donde también embedo la imagen;nótese que ambos nombres del la variable tipo Class tienen el mismo nombre),
[code]

xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*"
layout="absolute"
height="425">

[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var asset:Class;
]]>





[/code]
Peso final del swf: 140kb (hey!, estamos agregando un xml externo, está bien que este pese 1kb!)

Prueba 4: mismo jpg, diferentes archivos, diferente nombre


Utilizando el mismo archivo que en el ejemplo anterior (AssetInComponent.mxml), pero esta vez la variable local tiene un nombre diferente
[code]


xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*"
layout="absolute"
height="425">

[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var localAsset:Class;
]]>





[/code]
Peso final del swf: 140kb

Resumen


Prueba 1: 139kb
Prueba 2: 139kb,
Prueba 3: 140kb,
Prueba 4: 140kb

Conclusión


No hace falta ser ciéntico nuclear para darnos cuenta que no afecta en lo más mínimo cuántas veces se embeda un mismo asset en diferentes o en mismos archivos, claro lo ideal es poder tener los archivos en un solo lugar para asi sólo editar un lado en el caso de cambiar el asset o el nombre del mismo (acá es cuando mr Singleton nos viene de maravilla).
Pues que mal, que los swf pesen tanto, pero que bien que la librería no sea tan tonta y reconozca un asset para evitar aplicaciones aún más pesadas (recuerdo que el desktop de computadora.de pesaba 85kb, y eso que era un casi que shell =/ )
mr. zip vivé acá

1 Comments

Gustavo said:

Que buen test!! .. simple pero muy útil para saber como el comportamiento con archivos cargados.

Saludos kada!!!