Tuesday, February 25, 2014

Some performance comparison between techniques in C#

List<string>(map.Keys) vs map.Keys.ToList()

The following codes compare the List<string>(map.Keys) and map.Keys.ToList(). The results seems to suggest that there is no conclusive comparison

Dictionary<string, string> map = new Dictionary<string, string>();
for (int i = 0; i < 1000000; ++i)
{
 map[i.ToString()] = i.ToString();
}

for (int k = 0; k < 5; ++k)
{
 double time1 = 0;
 double time2 = 0;
 for (int i = 0; i < 300; ++i)
 {
  DateTime start_time = DateTime.Now;
  List<string> keys = new List<string>(map.Keys);
  DateTime end_time = DateTime.Now;
  TimeSpan ts = end_time - start_time;
  time1 += ts.TotalMilliseconds;

  start_time = DateTime.Now;
  keys = map.Keys.ToList();
  end_time = DateTime.Now;
  ts = end_time - start_time;
  time2 += ts.TotalMilliseconds;
 }


 //Console.WriteLine("TimeSpan1: {0} ms", time1);
 //Console.WriteLine("TimeSpan2: {0} ms", time2);
 if (time1 > time2)
 {
  Console.WriteLine("++ new List<string>(map.Keys) is better");
 }
 else if (time1 < time2)
 {
  Console.WriteLine("++ map.Keys.ToList() is better");
 }
}

No comments:

Post a Comment