都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

.NET アプリケーションの高速化について探し始めてみた - その6 - ( ConcurrentDictionary )

 ConcurrentDictionary は、スレッド数と初期容量を設定することで若干高速化されます。スレッドセーフなクラスなので、Parallel クラスで処理することも可能です。ソースコードは以下の通りです。

//ConcurrentDictionaryへの要素追加に関する計測
var lisw = Stopwatch.StartNew();
//スレッド数と初期容量を設定する。
var cdictionary = new ConcurrentDictionary<string, object>(4, MAXITEMS);
Parallel.For(0, MAXITEMS, i =>
{
    cdictionary[i.ToString()] = i;
});

//var cdictionary = new ConcurrentDictionary<string, object>();
//for (int i = 0; i < MAXITEMS; i++)
//{
//    cdictionary[i.ToString()] = i;
//}

lisw.Stop();

 以前より、高速化されています。

f:id:koogucc11:20130912032651j:plain

 

 もう少し高速化できないですかね。今日はもう眠いのでここまでにします。(手抜き....)