-4

コレクションオブジェクトパフォーマンスの問題によるデータ処理に関する問題に取り組むために、あなたからより良い意見または回答を得る必要があります。

ここでは、約5 ~ 6 十万行からデータを取得して、コレクション オブジェクトに保持します。選択したデータに到達するには、各カテゴリ フィルターに非常に限定する必要があります。そのすべてのインデックスをトラバースする必要があります。このため、パフォーマンスが低下します。

その代わりに、ハッシュテーブルがキーとそれ自体を別のハッシュテーブルの値として保持する計画があります同様、多くのハッシュテーブルがネストされて成長します。これはより良い解決策であるかどうかに関係なく、これは私のよくある質問です。

注: Oracle データベースでは、すべての行に約 15 から 17 の列 (多くは配列) が含まれています (これらの 6 十万のエントリ)。

4

1 に答える 1

0

タイトルの質問に答えるために、ハッシュテーブル(HashtableまたはHashMap)は優れたルックアップパフォーマンス(O(1))を提供しますが、かなりの量のメモリを消費します。メモリのオーバーヘッドは、キーと値のスペースに加えて、エントリごとに8ワードの領域にあります。

ハッシュテーブルを使用してレコードの検索を高速化することは、合理的なトレードオフです。ただし、レコードのフィールドを表すためにハッシュテーブルを使用することはお勧めできません。テーブルの各列にフィールドを持つカスタムクラスを使用することをお勧めします。

ただし、EJPのコメントも適切です。データベースに対してクエリを実行することを検討する必要があります。多くの点で、これはデータとインデックスのメモリ内コピーを構築し、独自のクエリインフラストラクチャを実装する方が優れています。

于 2013-01-04T10:40:26.907 に答える