2011-01-25 13 views
0

私は、データベースからいくつかの名前&のアドレスを取得するflex webappを持っています。プロジェクトは正常に動作しますが、私はそれをより速くしたいのです。名前の要求ごとにデータベースを呼び出す代わりに、配列にすべての名前をプリロードすることができます。&ユーザーがリクエストしたときに配列をフィルタリングすることができます。私がこのルートを辿る前に、配列内に50,000または100万の要素を持つアプリケーションを実行することが可能であるかどうかをチェックしたいと思っていましたか?アプリの速度を遅くする制限は何ですか? (私はアプリでは何が起こっているのかというとたくさんのことがあると予想しているが、このためにはこのアプリだけがこの巨大な配列で構成されていると仮定できる)。配列にどれくらいのデータがありますか?

答えて

1

はい、あなたが望むなら、おそらく数百万のアイテムをアレイに埋め込むことができ、Flashプレーヤーはあなたに叫ぶことはありません。しかし、本当にしたいですか?

作業を開始する前に、データベース全体をローカルにダウンロードする必要がある場合は、アプリケーションの起動に時間がかかりますか?多くのデータをダウンロードするのに必要な時間がそれほど重要ではない場合は、最適化する価値のあるデータベース検索がいくつかありますか?

これを行うには良いユースケースがある場合は、それらのデータ構造の使用方法に注意する必要があります。配列をループして項目を見つけるのは少し遅くなるため、インデックスをローカルに作成することをお勧めします。ほとんどの場合、いくつかのハッシュ構造を使用します。検索クエリを柔軟に設定できるほど、インデックス作成の問題はより面白くなります。

+0

"ローカルでインデックスを作成したいのですが..." –

+0

私は、関連するインデックスをキーとして使用し、配列の領域を指すオブジェクト構造を作成することを意味します。たとえば、配列が適切にソートされていると仮定すると、1文字のキーを持つオブジェクトを持つことができます。各キーは大きな配列の最初のインデックスを指し、その文字で始まる特定のフィールドを持ちます。そのオブジェクトを使用し、指定された文字に関連付けられた位置から始まる大きな配列をループすることで、その文字で始まるフィールドを持つすべてのレコードをすばやく見つけることができます。あなたはキーなどの全体の名前を使用してインデックスを想像することができます – Metal

+0

興味深いと聞こえる...私は例を見つけるために行くことができますか? –

2

大規模な配列を検索することは、特にあなたが約100万のレコードを話している場合は、必要以上に遅くなる可能性があります。

いくつかの大きめの小さい配列に分割できますか?アカウント番号で検索する場合は、最初の桁または2桁に基づいて分割します。

あなたの質問に直接答えるには、純粋なAS3の50,000要素配列の処理が問題ありません。一度250,000を超えると、私はそれを分解する必要があると思います。

しかし、多くのUI要素を表示することは異なります。 10,000要素でdataProviderにグラフをバインドしようとすると、あまりにも多くなります。リストやデータグリッドにも同じです。

しかし、純粋なモデルデータでは、私は縛られていないので、私は250,000までの私の経験をお勧めします。

2

データのあなたの読み込みが大量に(あなたはしかしリストを使用している場合はわからない)場合は、そのは、必要に応じてchuncks内のデータをつかむためにページングAsyncListViewの使用についてジェームズ区のポストをチェックアウトすることができます。このようなことをすぐに試して実行しようとします。彼の実行可能な例はページング100で100,000行を使用します(HttpService/AMFタイプの呼び出しで動作します)。 http://www.jamesward.com/2010/10/11/data-paging-in-flex-4/

関連する問題