私は大量のオブジェクト(2000+)でのフロッキング/ステアリングビヘイビアのためにいくつかのライブラリクラスを開発しています。私は< 500インスタンスでは、パフォーマンスが妥当であることが分かっています。数字が増えるにつれて、フレームレートが低下します。ActionScript 3の最適化 - オブジェクトの大量のパフォーマンスを向上させる
FlintやBox2Dなどのライブラリでは、ばかげたパーティクル/オブジェクトのライブラリで顕著なパフォーマンスが見られました。そのため、コードを最適化/リファクタリングすることができます。
私は、ビット単位の操作や最適化されたループなどの基本的な最適化について認識しています。私が検討すべきより根本的なアプローチはありますか?たとえば、現在、各インスタンスはベクターベースのMovieClipです。 BitmapDataを使用する方が効率的でしょうか?
簡単に言えば、BitmapDataとベクターベースのムービークリップを使用することについて正しいと思いますが、MovieClipでcacheAsBitmapをtrueに設定するだけで効率を上げることさえできます。一般的に言えば、私はFlex/Flashで最大のパフォーマンスを得ているようですが、オブジェクトの作成と破壊を厳密に制御しているようですが、これは明らかですが、すでに作成されたオブジェクトを再利用するためにできることはすべてあります。また、直観に反するように、Numberを使用して最適化することで、プレーヤーがuintまたはintの代わりにNumberを使用するように見えることがあります。 – shaunhusain
具体的には、GoogleマップのフラッシュAPIで使用するコードを最適化する際に、これらのテクニックをいくつか使用しました。詳細はこちらhttp://www.svennerberg.com/2009/01/handling-large-amounts-of-markers-in-google -maps /不要なオーバーヘッドをたくさん追加する可能性があるので、可能な限りBindableの使用を避けることをおすすめします(リスナ/ディスパッチャコードをAS3に追加し、自動的にイベントをディスパッチするのはコストがかかる)。 – shaunhusain