Dictionary と NameValueCollection を比較してみた

不勉強にも、”NameValueCollection”の存在を知りませんでした。
で、イロイロ調べていくと、「Key(string)」と「Value(string)」を格納するDictionaryのようなもので、Keyで検索できるという機能が、.NET 1.1環境では特長になります。
.NET 2.0 では、Generic.Dictionary が使えるので、どちらを使おうか、若干悩ましいかもしれません。
それぞれ、リファレンスはコチラです。
NameValueCollection
(System.Collections.Specialized 名前空間)
Dictionary
(System.Collections.Generic 名前空間)
で、要素を追加して、読み取って…と言うのを繰り返してみました。
1,000,000要素で…
NameValueCollection追加 -> 約15秒
NameValueCollection取得 -> 約1.93秒
GenericDictionary追加 -> 約7.56秒
GenericDictionary取得 -> 約1.35秒
結構差がつきました。
しかし、1000要素では
NameValueCollection追加 -> 約0.02秒
NameValueCollection取得 -> 約0秒
GenericDictionary追加 -> 約0秒
GenericDictionary取得 -> 約0秒
と、ほとんどかわりません。
メモリ使用量までの統計は取っていませんが、少量のデータを操作する分には、さしてかわらないようです。
ま、ひとつのベンチマーク結果ということで。

2 thoughts on “Dictionary と NameValueCollection を比較してみた

  1. そうなんです。
    String固定なんです。
    System.Collections.Specialized という地味な所にあるため、私も気づきませんでした。
    で、MSDNを漁って行くと、興味深いことに気づきました。
    System.Net.WebHeaderCollection
    System.Web.HttpClientCertificate
    は、この NameValueCollection を使っていると言うことです。
    たしかに、WebHeaderの処理にはこのテのものが必要ですからねぇ、PerlのHashみたいに。
    いやぁ、奥深いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree