Domanda

... Sto lavorando a un paio di teorie, ma sono interessato a sentire altre opinioni.

Questo è stato verificato su tre macchine diverse, due finestre e l'altra Linux. Il compilatore utilizzato è flexbuild (presumibilmente mxmlc) e formica con mxmlc.

Abbiamo aggiunto il codice a un piccolo progetto di file singolo .as autonomo e le dimensioni del file swf compilato sono diminuite di 20k, da 32k a 12k sulla scatola di Linux. Leggermente diverso sulla finestra di Windows, da 27k a 8.5k.

Con uno strumento personalizzato abbiamo verificato che entrambe le versioni utilizzano la compressione swf nativa, senza enormi metadati aggiuntivi, l'unica modifica allo script di build ant è quella di aggiungere un file swc alla build.

Nessuna rimozione di codice (nessuna rimozione di importazione, nessuna rimozione di variabili, nada), solo aggiunta e piuttosto semplice, un paio di componenti aggiunti allo stage, abilitati, un paio di piccole funzioni, ecc., nessun loop modificato, niente di ovvio che porterebbe a meno codice.

L'uso del controllo del codice sorgente per creare la vecchia versione comporta comunque un file più grande, quindi non sembra essere un cambiamento nelle librerie o nel compilatore.

Nessuno del codice utilizza componenti Flex, solo dritto " flash.etc ... " digitare import.

Qualcuno ha visto comportamenti del genere? Cosa pensi possa causare questo?

È stato utile?

Soluzione

Ho già visto questo comportamento negli assembly .NET.

La mia ipotesi su questo comportamento (ovunque si verifichi) è che qualunque cosa venga aggiunta consente al compilatore di fare più ottimizzazioni di quanto avrebbe potuto fare in precedenza.

Perché ciò potrebbe richiedere una conoscenza molto più dettagliata del funzionamento interno dei compilatori di quanto io abbia (e perché ciò potrebbe accadere - se questa è effettivamente la causa qui - nel tuo caso probabilmente potrebbe essere solo adeguatamente spiegata in modo adeguato da un ingegnere Adobe).

Altri suggerimenti

Sto solo indovinando, ma quando si tratta di file così piccoli, forse stai vedendo il debole dai settori del disco rigido?

Il mio primo sospetto sarebbe che il primo swf fosse compilato in modalità debug che aggiungesse un sacco di informazioni. Se così non fosse, indovinerei che il secondo è stato compilato con -optimize = true.

Ma se nessuno di questi è il caso, è davvero molto interessante!

Ho già visto questo stesso comportamento prima. Presumo che sia una combinazione di due fattori: ottimizzazione e compressione. È possibile che il tuo nuovo codice consenta all'ottimizzatore di fare le cose in modo diverso (o, in modo non intuitivo, impedisce una sorta di inline o srotolamento che stava svolgendo prima). Direi che è più probabile che i dati aggiuntivi presenti lo rendano un candidato migliore per la compressione, poiché tutti i file flash sono compressi, quindi è stato più efficiente nel compattarlo. Entrambe le teorie sono solo ipotesi semi-istruite.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top