linq和经典方法之间的性能差异

时间:2014-04-15 13:39:59

标签: c# performance linq

我想知道以下两个代码行之间的性能差异。哪一个更快?

1

anyList = Enumerable.Range(0, 1440).Select((n, i) =>
          {
          if ((i >= 480 && i < 790) || (i >= 1050 && i < 1170)
              return 0;
          else if ((i >= 790 && i < 1050)
              return 1;                                       
          else
              return 2;
          }).ToList();

2

for (int i = 0; i < 1440; i++)
{
    if ((i >= 480 && i < 790) || (i >= 1050 && i < 1170)
        anyLisy.Add(0);
    else if ((i >= 790 && i < 1050)
        anyLisy.Add(1);                                       
    else
        anyLisy.Add(2);
}

哪一个更快,哪一个分配了更多内存?

1 个答案:

答案 0 :(得分:2)

使用StopWatch并制作类似这样的基准

Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();

for (int i = 0; i < 1440; i++)
{
    if ((i >= 480 && i < 790) || (i >= 1050 && i < 1170))
        anyLisy.Add(0);
    else if (i >= 790 && i < 1050)
        anyLisy.Add(1);                                       
    else
        anyLisy.Add(2);
}
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;

        // Format and display the TimeSpan value.
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        Console.WriteLine("RunTime " + elapsedTime);