6 ~ 7 個のプロパティ (属性) を持つメモリ内オブジェクト (約 50000 ~ 100 万) のリストがあります。
要件は、このメモリ内リストを複数の属性でフィルタリングすることです。線形検索により、リストに対して O(N) 検索を実行できます。一般的なリストよりも優れたデータ構造でそれを行うより速い方法はありますか?
C#.NET 4.0 を使用しています。
6 ~ 7 個のプロパティ (属性) を持つメモリ内オブジェクト (約 50000 ~ 100 万) のリストがあります。
要件は、このメモリ内リストを複数の属性でフィルタリングすることです。線形検索により、リストに対して O(N) 検索を実行できます。一般的なリストよりも優れたデータ構造でそれを行うより速い方法はありますか?
C#.NET 4.0 を使用しています。
IndexedList という名前のヘルパー ライブラリを使用できます。http://indexedlist.codeplex.com/ からダウンロードできます。 このライブラリを使用すると、オブジェクトの任意のフィールドにインデックスを追加して、リスト内で高速検索を実行できます。デフォルトのインデックス実装では、インデックス データの格納にディクショナリが使用されますが、これも変更できます。私は自分のプロジェクト用にこのライブラリを作成し、それをオープンソース プロジェクトとして新たに公開しました。このライブラリに関するご意見をお待ちしております。
ほんの数秒前にこれを読みました: http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable/
SortedDictionary
検索が進むにつれて最善の策と思われますが、複数の属性で検索したいので、これが低下するため、その大量のデータの検索と挿入のバランスを取りたい場合SortedList
は、メモリ使用量を犠牲にしてより良い結果が得られるかもしれません.