Pergunta

... Eu estou trabalhando em um par de teorias, mas eu estou interessado em ouvir outras opiniões.

Isto foi verificado em três máquinas diferentes, duas janelas do outro linux. O compilador usado é flexbuild (Presumivelmente mxmlc) e formiga com mxmlc.

adicionado código para um projeto pequeno arquivo .as único stand-alone e o tamanho do arquivo SWF compilado desceu por 20k, de 32k para 12k na caixa de linux. Ligeiramente diferente nas janelas caixa, de 27k para 8.5k.

Com uma ferramenta personalizada que verificarmos que ambas as versões estão usando compressão de swf nativa, nenhum metadados adicionais maciça, a única modificação para o script de construção Ant é Adicionar um arquivo SWC para a compilação.

n remoção de código (Sem remoções de importação, não há remoções variáveis, Nada), apenas de adição simples e consideravelmente em que, um par de componentes adicionada à fase, activada, um par de pequenas funções, etc, sem loops modificados, nada óbvio que resultaria em menos código.

Usando o controle de origem para construir a versão antiga ainda resulta em um arquivo maior, por isso não parece ser uma mudança nas bibliotecas ou compilador.

Nenhum do código está usando componentes Flex, apenas em linha reta "flash.etc ..." tipo importações.

Alguém comportamento como este visto? O que você acha que poderia causar isso?

Foi útil?

Solução

Já viu esse comportamento no .NET montagens antes.

Meu palpite sobre este comportamento (onde quer que ocorra) é que tudo o que é adicionado permite que o compilador para fazer mais otimização do que poderia ter anteriormente.

Por isso pode ser exigiria conhecimento muito mais detalhado do funcionamento interno de compiladores do que eu tenho (e por que isso pode estar acontecendo - se esta é realmente a causa aqui - no seu caso poderia provavelmente só ser totalmente explicado adequadamente por um engenheiro Adobe).

Outras dicas

Eu estou apenas supondo, mas quando se trata de arquivos este pequeno, talvez você está vendo a folga dos setores do disco rígido?

Meu primeiro palpite seria que o primeiro swf foi compilado no modo de depuração que adiciona um monte de informações. Se isso não for o caso, então eu acho que o segundo foi compilado com -optimize = true.

Mas se nenhum desses são o caso é realmente muito interessante!

Eu vi esse mesmo comportamento antes também. Eu suponho que é uma combinação de dois fatores: otimização e compressão. É possível o novo código permite que o otimizador a fazer as coisas de uma maneira diferente (ou, unintuitively, evita algum tipo de inlining ou desdobramento de loop que ele estava fazendo antes). Eu diria que é mais provável que o atual dados adicionais tornou um candidato melhor para a compressão, como todos os arquivos flash são compactados, então foi mais eficiente na compactação-lo. Ambas as teorias são apenas suposições semi-educado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top