0

何千ものデータを扱うのに問題があります。シナリオは次のとおりです。40000 を超えるオブジェクトを含むコレクション (Vector.) をループし、互いに重ならないアイテムのみを描画します。現時点では: - 正方形で描画できる領域を分割します (ベクターには、正方形を識別するすべてのポイントが含まれます); - ベクター内の各アイテム。正方形をループして、アイテムが属する領域を把握します。- Vector で最初のアイテムを描画します。描画されたアイテムをベクターに追加します。描画されたアイテムの - すべての残りのアイテムについて、描画する必要があるアイテムが、ベクターをループする所属領域に既に描画されているアイテムと重なっているかどうかを確認します。描画されたアイテムの: オーバーラップしない場合は、描画してベクターに追加します。描画されたアイテムの、重なる場合は描画しません。
ループを高速化するために、辞書とベクトルを使用しています。ループの外側ですべての変数を宣言しています。また、アクション スクリプトに Duff のデバイスも使用してい
ます。問題は、ループがまだ非常に遅いことです (約 9 秒)。何か案が?

4

2 に答える 2

0

私の記憶が正しければ、ベクトルは配列よりも遅いです。

また、次を使用します。

var i:uint = 0;
for(i; i < v.length(); i++)

よりも速い

for each(asdf in asdf)

(どのようにループしているかわかりません)。

また、1 つの巨大な計算ではなく、その場で配列をシフトして作成することを検討してください。それを異なる配列に分割すると、最終的に必要な計算が少なくなる可能性があります

于 2013-10-15T04:01:34.647 に答える