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

本文关键字:性能 之间 经典 方法 linq | 更新日期: 2023-09-27 17:58:37

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

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);
}

哪个更快,哪个分配的内存更多?

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

使用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);