我想知道以下两个代码行之间的性能差异。哪一个更快?
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);
}
哪一个更快,哪一个分配了更多内存?
答案 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);