C#では、Dictionary<int, T>
に入れることができる静的なデータがあります。T
は参照型です。 Webアプリケーションは静的に1回だけ初期化する必要があります(変更されません)。読み取り専用ディクショナリアクセスで最も効率的なメモリ内データ構造
パフォーマンスの挿入や削除について心配する必要はないので、使用するのに最適なデータ構造は何ですか?私はおそらく、かなり均等に間隔を置いて〜100,000のエントリのようなものを見ています。
私はこのデータを取得するための最適なアルゴリズムを探しています。 Dictionary<>
は悪くありませんが、読み取り専用のデータ用に最適化されたものがなければならないと思います。
これらのキーの範囲が0〜400,000であるとは思われますが、確認していません。そのような場合は、推奨事項はどのように変更されますか? (私は可能な答えとして投稿すると思っています)。
は、たぶん私は可能性があります。1回のデータによる
- スキャンとは、第二のパスを取る最高のキー
- が最高のキー+ 1
- の大きさを持つ配列を割り当てつかみますデータを配列に格納します。
これは、合理的な負荷係数を持つHashTable/Dictionaryよりも優れているか悪いですか?
100Kのエントリを持つ単一の辞書の検索パフォーマンスが、アプリケーションの全体的なパフォーマンスに大きく影響することは考えにくいようです。 –
アプリケーションは事実上、この辞書を検索する検索ページです。私はこのアプリと思考実験の両方の答えに興味があります。 –
@MichaelPetito私はこれらのひどいジャークに疲れています。なぜあなたのコードのこの特定の部分がより速く必要なのでしょうか?気にしない場合は、あなたが気にする質問にコメントしてみませんか?一部の人々は、コードの一部で絶対最大限のパフォーマンスを必要とすることがあります。そして、アダムはなぜ彼がそれをより速く望んでいるかについて、自分自身を正当化する必要はありません。私は時にはそれらの1つになることもあります。そして、パフォーマンスに関するほとんどすべての質問で、私はこのような全く役に立たないコメントをスキップする必要があります。 –