標準の BCL のパフォーマンスが向上した IDictionary の実装を探しています。
多数の要素 (>10K) で非常にうまく機能し、より GC に適した一定のルックアップ時間を持つものを探しています。
Ps: いいえ、私は自分で 1 つを書くことができません :)
標準の BCL のパフォーマンスが向上した IDictionary の実装を探しています。
多数の要素 (>10K) で非常にうまく機能し、より GC に適した一定のルックアップ時間を持つものを探しています。
Ps: いいえ、私は自分で 1 つを書くことができません :)
BCL ディクショナリは、償却定数時間で既に実行されており、10K 要素を簡単に処理できます。
「もっと GC フレンドリー」であるべきだとおっしゃっていますが、現在のバージョンについて何が気になっていますか?
要素を辞書に頻繁に追加していますか? その場合は、チャーンを避けるために初期容量を大きくして作成してください。
私は実装のベンチマークを行うことができませんでしたが、コペンハーゲン大学から、代替の、そしてより包括的な選択のジェネリックコレクションクラスを入手できます。
http://www.itu.dk/research/c5/
これらは、さまざまなバッキングソリューション(ツリー、ハッシュテーブルなど)を備えた多数の汎用ディクショナリ実装を提供します。これらのいずれかがニーズに合っている可能性があります。このクラスライブラリの開発では、パフォーマンスが主要な要素でした。
もちろん、最初にBCLジェネリックDictionaryクラスを試すことをお勧めします。これにより、時間を節約でき、パフォーマンス要件にうまく適合する可能性があります。
BCL よりも高速なマネージド ディクショナリを見つけるのは難しいと思います。私はそれを書き込もうとしましたが、読み取りと書き込みのパフォーマンスのバランスを取ったときに得られる速度とほぼ同じであることがすぐにわかりました。