4

これに関するいくつかのブログ エントリを見て、チーム メイトと 1、2 回議論しましたが、スタック オーバーフロー コミュニティがどう考えているかを知りたいです。

では、なぜAdob​​e Alchemy Toolは、flex コンパイラよりもはるかに高速に実行されるフラッシュ バイト コードを作成するのでしょうか?

また、flex コンパイラが同様のパフォーマンス向上を実現できるようになるのはいつですか?

同じパフォーマンスを得るには、プログラマーが特別な配列またはその性質のものを使用する必要がありますか?

4

2 に答える 2

6

Alchemy は、ActionScriptでのLLVMの実装です。簡単に言えば、メモリ ストアとして ByteArray を使用する仮想マシンです。

Alchemy によってコンパイルされた C コードは、(Flash 10 で導入された一部のオペコードを介して) 「メモリ」に直接アクセスできるため、(オブジェクトへのポインタを含む) メモリを自由にチャンクできます。これにより、すべてではありませんが一部のコードの実行速度が向上します。Alchemy は AVM (別の VM) 上で実行されている VM であるため、一部の種類のコードは実際には Alchemy での実行速度が遅くなります。

さらに、Alchemy には ActionScript クラスへのネイティブ アクセスがないため、相互運用クラスを介してアクセスする必要があります。

于 2009-12-09T11:07:41.443 に答える
3

alchemy ツールは、通常のコンパイラでは利用できない Flash Player の命令を使用するコードを作成します (これらの命令は特に alchemy 用に公開されたという話です)。

通常のコンパイラが最終的に同様の利益をもたらすかどうか、うまくいけば。コンパイラが標準以下のコードを作成することは何度か証明されており、生成されたコードを最適化するプロジェクトがいくつかあります。これらは、アドビが改善するのを恥じるかもしれません。

おそらく、これらのパフォーマンスを向上させるためにプログラマーが特別なことをする必要はありません (ただし、最適化ブログをチェックしてください。特定の方法でループを作成すると、ループがより適切に最適化される可能性があります)。

于 2009-12-09T10:41:09.027 に答える