首页 > 其他分享 >Where.FirstOrDefault和FirstOrDefault的性能对比

Where.FirstOrDefault和FirstOrDefault的性能对比

时间:2022-10-23 23:02:09浏览次数:52  
标签:FirstOrDefault data len DateTime 数据量 Where 对比

最近开发过程中发现大家筛选数据的时候有两种写法,一种是Where().FirstOrDeafult(),另一种是直接使用了FisrOrDeFault()

于是自己写了一个简单的demo来进行测试(如果各位大神有更好的解答请多多指点)

首先贴上测试的代码

count++;
Random rand = new Random();
int len = 1000;
List<double> data = new List<double>(len);

for (int i = 0; i < len; i++)
{
int number = rand.Next(1, len);
double num = number / len * 100;
data.Add(num);
}
int local = rand.Next(1, len);
data.Insert(local, 3.14);

DateTime time1 = DateTime.Now;
var ii = data.Where(x => x == 3.14).FirstOrDefault();
DateTime time2 = DateTime.Now;
TimeSpan span1 = time2.Subtract(time1);
//Console.WriteLine($"第一次方法的执行时间:{span1.TotalMilliseconds}ms");

DateTime time3 = DateTime.Now;
var iii = data.FirstOrDefault(x => x == 3.14);
DateTime time4 = DateTime.Now;
TimeSpan span2 = time4.Subtract(time3);

textBox1.Text += $@"第{count}次运行结果:Where().FirstOrDefault时间:{span1.TotalMilliseconds}ms,FirstOrDefault时间:{span2.TotalMilliseconds}ms";
  1. 首先来看数据量为1000时的情况

Where.FirstOrDefault和FirstOrDefault的性能对比_.net

从结果来看,两种实现方式并没有很大的区别


  1. 将数据量上升到10W的情况

Where.FirstOrDefault和FirstOrDefault的性能对比_.net_02

10W的数据量相对来说已经比较大了,此时两者已经有所拉开距离,相对来说Where().FirstOrDeafult()的运行时间要比FisrOrDeFault()快一些


  1. 当集合内的数量达到1000W

Where.FirstOrDefault和FirstOrDefault的性能对比_.net_03

此时两者的差距就很明显了,Where().FirstOrDeafult()的运行时间明显要比FisrOrDeFault()快得多

从本次试验的结果来看,当数据量很小的时候,两种实现方式的运行时间相差不大,但是当数据量较大时,Where().FirstOrDeafult()的运行时间要比FisrOrDeFault()快一些

标签:FirstOrDefault,data,len,DateTime,数据量,Where,对比
From: https://blog.51cto.com/u_13160626/5787678

相关文章