3

私は .NET Hashtableクラスを勉強していて、さまざまな側面を試してみたいと思っています...

  • 特定のデータセットで発生している衝突 (再ハッシュ) の数
  • ハッシュテーブルの拡張は、マルチスレッド アクセスに対して安全ですか?
  • ハッシュテーブルの現在の負荷率は?

特定のハッシュテーブルまたは辞書に関する上記の情報を実験または学習するにはどうすればよいですか

4

1 に答える 1

2

のスレッド セーフはMSDNHashtableに記載されています。1 つのスレッドのみが に書き込む場合、スレッド セーフであり、これには展開が含まれている必要があります。Hashtable

ここで、Reflector を使用して掘り下げます。

負荷係数はloadFactorプライベート フィールドに格納され、その値を確認したい場合はリフレクションを使用してアクセスできます。

再ハッシュはより困難です。これらは の内部状態ではなくHashtable、 rehash によって検出可能な方法で変更され、 rehashによってのみ変更されます。したがって、ここでは他のオプションを検討する必要があります。たとえば、Reflector を使用して独自の同一の Hashtable 実装を作成し、再ハッシュをカウントするコードを追加するなどです。それを行っている場合は、負荷係数をプロパティとして公開して、作業を楽にすることもできます。

于 2012-05-25T12:53:08.960 に答える