2009-04-21 9 views
0

"ここには、コンパクションをサポートしない辞書の実装があります。辞書圧縮サポートとは何ですか?

この引用はここから取得されます:http://blogs.msdn.com/jaredpar/archive/2009/03/03/building-a-weakreference-hashtable.aspx

私はjaredparはこことC#のセクションの記事にメンバーであることを知っています。正確に「辞書圧縮サポート」とは何ですか?私はそれを最適化するか、それを小さくする何らかの方法だと仮定していますか?しかし、どうすれば(これがあれば)?

おかげIは、非収集要素の数のためのより適切なサイズにするために辞書を縮小した参照のうえ、その特定のポスト

答えて

4

ほとんどのハッシュテーブルは、通常、リンクリストなどの別の構造を指す大きな配列によってバックアップされています。配列は初期化サイズで開始します。ハッシュテーブルに追加される要素の数が特定のしきい値(たとえば、配列の要素数の70%)を超えると、ハッシュテーブルが展開されます。これには、通常、新しい配列を2倍のサイズで作成し、その値を新しい配列に再追加することが含まれます。

弱参照ハッシュテーブルの問題点の1つは、時間の経過と共に要素が収集されることです。時間が経つと、これは無駄なスペースにつながります。この配列の倍化処理を行うのに十分な要素を追加したとします。時間が経つにつれて、これらのうちのいくつかが収集され、残りの要素が以前の配列サイズに収まるようになりました。

これは必ずしも悪いことではありませんが、無駄なスペースです。圧縮は、ハッシュテーブルの基礎となるデータ構造を本質的に縮小して、データのより適切なサイズにするプロセスです。

+0

非常に真実で良い考え。ありがとう。 – dotnetdev

+0

5分以内に馬の口からまっすぐに答え...悪くない! +1 – rmeador

関連する問題