質問

...私はいくつかの理論に取り組んでいますが、他の意見を聞くことに興味があります。

これは3つの異なるマシンで検証され、2つのウィンドウはもう1つのLinuxです。使用されるコンパイラはflexbuild(おそらくmxmlc)およびmxmlcのantです。

小さなスタンドアロンの単一の.asファイルプロジェクトにコードを追加し、コンパイルされたswfファイルのサイズは、Linuxボックスで20k、32kから12kに減少しました。 Windowsボックスでは、27kから8.5kまでわずかに異なります。

カスタムツールを使用して、両方のバージョンがネイティブswf圧縮を使用し、大規模な追加メタデータを使用していないことを確認しました。antビルドスクリプトの唯一の変更は、swcファイルをビルドに追加することです

コードの削除なし(インポートの削除なし、変数の削除なし、nada)、追加のみで非常に簡単、いくつかのコンポーネントがステージに追加され、有効になり、いくつかの小さな機能など、ループは変更されず、コードが少なくなることは明らかではありません。

ソース管理を使用して古いバージョンをビルドすると、ファイルが大きくなるため、ライブラリまたはコンパイラの変更ではないようです。

Flexコンポーネントを使用しているコードはなく、「flash.etc ...」だけです。インポートと入力します。

このような動作を見た人はいますか?何がこれを引き起こすと思いますか?

役に立ちましたか?

解決

以前に.NETアセンブリでこの動作を見たことがあります。

この動作についての私の推測(発生する場所はどこでも)は、追加されるものは何でも、コンパイラが以前よりも多くの最適化を行うことができるということです。

なぜ私が持っているよりもコンパイラの内部動作の詳細な知識を必要とするかもしれない(そして、なぜこれが実際にここに原因があるのであれば)あなたの場合、おそらく十分に十分に説明できるでしょうAdobeエンジニアによる)。

他のヒント

推測しているだけですが、これほど小さいファイルの場合、ハードドライブセクターのスラックが表示されている可能性がありますか?

最初の予感は、最初のswfがデバッグモードでコンパイルされ、大量の情報が追加されたことです。そうでない場合は、2番目のものが-optimize = trueでコンパイルされたと思います。

しかし、どちらにも当てはまらない場合は、本当に非常に面白いです!

これと同じ動作を見たこともあります。最適化と圧縮という2つの要素の組み合わせだと思います。新しいコードを使用すると、オプティマイザーが別の方法で処理を実行できるようになります(または、直感的には、以前に行っていた何らかのインライン化またはループの展開を防ぎます)。すべてのフラッシュファイルが圧縮されているため、追加データが存在することで圧縮の候補になった可能性が高いと考えられるため、圧縮の効率が向上しました。両方の理論は、半教育的な推測にすぎません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top