Pregunta

... Estoy trabajando en un par de teorías, pero me interesa escuchar otras opiniones.

Esto se ha verificado en tres máquinas diferentes, dos ventanas y el otro linux. El compilador utilizado es flexbuild (Presumiblemente mxmlc) y ant con mxmlc.

agregamos código a un pequeño proyecto de archivo .as individual y el tamaño del archivo swf compilado bajó en 20k, de 32k a 12k en la caja de Linux. Un poco diferente en el cuadro de ventanas, de 27k a 8.5k.

Con una herramienta personalizada, hemos verificado que ambas versiones utilizan compresión SWF nativa, no hay metadatos adicionales masivos, la única modificación del script de compilación ant es agregar un archivo swc a la compilación.

Sin eliminación de código (sin eliminación de importación, sin eliminación de variables, nada), solo adición y bastante simple, un par de componentes agregados al escenario, habilitados, un par de funciones pequeñas, etc., sin bucles modificados, nada obvio que resultaría en menos código.

El uso del control de código fuente para compilar la versión anterior aún genera un archivo más grande, por lo que no parece ser un cambio en las bibliotecas o el compilador.

Ninguno de los códigos está usando componentes Flex, solo recto " flash.etc ... " tipo de importaciones.

¿Alguien ha visto un comportamiento como este? ¿Qué crees que podría causar esto?

¿Fue útil?

Solución

He visto este comportamiento en ensamblados .NET antes.

Mi suposición sobre este comportamiento (donde sea que ocurra) es que todo lo que se agregue permite al compilador hacer más optimización de lo que podría haber hecho anteriormente.

Por qué podría ser que esto requiera un conocimiento mucho más detallado del funcionamiento interno de los compiladores que el que tengo (y por qué esto puede estar sucediendo, si esto es realmente la causa aquí) en su caso, probablemente solo pueda explicarse de manera adecuada por un ingeniero de Adobe).

Otros consejos

Solo estoy adivinando, pero cuando se trata de archivos tan pequeños, ¿quizás estás viendo la holgura de los sectores del disco duro?

Mi primer presentimiento sería que el primer swf se compiló en el modo de depuración que agrega un montón de información. Si ese no es el caso, entonces supongo que el segundo fue compilado con -optimize = true.

Pero si ninguno de esos es el caso, ¡es muy interesante!

También he visto este mismo comportamiento antes. Supongo que es una combinación de dos factores: optimización y compresión. Es posible que su nuevo código le permita al optimizador hacer las cosas de una manera diferente (o, de manera no intencionada, evita algún tipo de alineación o desenrollado de bucle que estaba haciendo antes). Yo diría que es más probable que los datos adicionales presentes lo hagan un mejor candidato para la compresión, ya que todos los archivos flash están comprimidos, por lo que fue más eficiente en compactarlos. Ambas teorías son solo suposiciones semi-educadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top