当前位置 : 主页 > 网络编程 > net编程 >

Where.FirstOrDefault和FirstOrDefault的性能对比

来源:互联网 收集:自由互联 发布时间:2023-09-06
最近开发过程中发现大家筛选数据的时候有两种写法,一种是Where().FirstOrDeafult(),另一种是直接使用了FisrOrDeFault() 于是自己写了一个简单的demo来进行测试(如果各位大神有更好的解答

最近开发过程中发现大家筛选数据的时候有两种写法,一种是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()快一些

上一篇:sqlsugar 统计总数超级方便写法
下一篇:没有了
网友评论