I got some strange results when using concurrent collections, so I decided to try to track it down, and wrote the following code:
var count = ?;
var list = new List<object>(count);
var sp = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
list.Add(new ConcurrentBag<int>());
}
sp.Stop();
Console.WriteLine("{0} {2} items in {1:#,#;;0}ms = {3:#,#;;0}ms per item",
sp.Elapsed, sp.ElapsedMilliseconds, count, sp.ElapsedMilliseconds / count);
And then I started to play with the numbers, and it is not good.
10 items in 2ms = 0ms per item
This is incredibly high number, you have to understand. Just to compare, List<int> takes 8 ms to create 100,000 items.
Read more: Ayende @ Rahien
QR: