- class Program
-
- {
-
- static void Main(string[] args)
-
- {
-
- var dict = new Dictionary<int, int>();
-
- var dict1 = new ConcurrentDictionary<int, int>();
-
- Stopwatch stopwatch = new Stopwatch();
-
- stopwatch.Start();
-
- PopulateDictionary(dict, 1000000);
-
- stopwatch.Stop();
-
- Console.WriteLine("Dictionary Write: " + stopwatch.ElapsedMilliseconds);
-
- stopwatch.Restart();
-
- int total = GetTotal(dict);
-
- stopwatch.Stop();
-
- Console.WriteLine("Dictionary Read: " + stopwatch.ElapsedMilliseconds);
-
- stopwatch.Restart();
-
- PopulateDictionary(dict1, 1000000);
-
- stopwatch.Stop();
-
- Console.WriteLine("ConcurrentDictionary Write: " + stopwatch.ElapsedMilliseconds);
-
- stopwatch.Restart();
-
- total = GetTotal(dict1);
-
- stopwatch.Stop();
-
- Console.WriteLine("ConcurrentDictionary Read: " + stopwatch.ElapsedMilliseconds);
-
- Console.ReadKey();
-
- }
-
- static void PopulateDictionary(IDictionary<int, int> dict, int size)
-
- {
-
- for (int i = 0; i < size; i++)
-
- {
-
- dict.Add(i, i);
-
- }
-
- }
-
- static int GetTotal(IDictionary<int, int> dict)
-
- {
-
- int total = 0;
-
- foreach (var item in dict)
-
- {
-
- total += dict[item.Value];
-
- }
-
- return total;
-
- }
-
- }
Conclusion: In single thread environment concurrent dictionary is costlier than dictionary.