2012-01-13 6 views
2

私のシナリオでは、どのデータ構造がより良いパフォーマンスを提供するのだろうかと思っていました.... 私の要件は以下の通りです: 巨大なデータセット数百万のレコードがあります。実行時にこれ以上変更するつもりはないので、ソートされた方法で格納されている必要はありません。 Listと一緒に行くことを考えていましたが、Linqクエリを使用して条件呼び出しInRangeのパフォーマンスは非常に悪いです...私はforeachを行う場合、パフォーマンスはあまり偉大ではありません....私はかなりそれを行うための最善の方法があることを確信しています(私は構造体を使用するか、 IEquatableでもパフォーマンスは向上していません... 魔女はC#の中で最も速いデータ構造です。マネージ? 私が欲しいのは、それがあるので、...リストであるが、私はListクラスは私の要件に合わせて最適化されていないことを怖いでしょう Rnage高性能のための最良のデータ構造C#

クラスのインスタンスの数百万
class Range 
{ 
    public int Low {get; set;} 
    public int High {get; set;}  
    public bool InRange(int val) { return val >= Low && val <= High; } 
} 

ロジックの例を格納するためのデータ構造であり、並べ替えと私はソートする必要はありませんし、パフォーマンスに多くの影響を...

助けてくれてありがとう!

+0

正確に達成しようとしているのは何ですか?どのような種類のデータがデータセットに保存されていますか?どのような操作をデータセットでやっていますか?また、Rangeクラスが質問と関係があることを本当に理解していない、おそらくあなたはもう少しコードだと説明することができます。 – Tiddo

+1

あなたはあなたの質問に言い返すべきです、あなたがしようとしていることはあまり明確ではありません。私が理解しているところでは、Rangeオブジェクトのコレクションがあり、InRangeがtrueを返すものを探したいのですか? –

+0

はいトーマスは正しいです...私はリストを使用して数百万の範囲を保存することを考えていましたが、それはパフォーマンスになると非常に悪い結果になるので...私はクラスを保存する別の方法が必要です構造体で変更してください)私の要求に合わせてより最適化されました: – yamini

答えて

1

私はインターバルツリーが必要かもしれないと思います。最近alan2hereは彼が取り組んでいるプロジェクトについていくつかのquestionsを尋ねました。エリック・リッペルトは、インターバル・ツリー構造に向けて彼をone of themと指摘した。

関連する問題