性能分析ADO.NET和Entity Framework。
性能分析ADO.NET和Entity Framework。
哪个性能更好?ADO.NET还是Entity Framework。
这是我想要分析的两种方法。
ADO.NET测试方法
public void ADOTest() { Stopwatch stopwatch = Stopwatch.StartNew(); using (SqlConnection con = new SqlConnection(connection)) { string Query = "select * from Product "; SqlDataAdapter da = new SqlDataAdapter(Query, con); DataSet ds = new DataSet(); con.Open(); da.Fill(ds); DataView dv = ds.Tables[0].DefaultView; } stopwatch.Stop(); Console.WriteLine("ADO.NET执行时间={0}", stopwatch.Elapsed); }
Entity Framework测试方法
public void EFTest() { Stopwatch stopwatch = Stopwatch.StartNew(); var list = _OnlineStoreEntities.Products.ToList(); stopwatch.Stop(); Console.WriteLine("Entity Framework执行时间={0}", stopwatch.Elapsed); }
第一次执行的结果
当我运行上述方法超过100次时,平均执行时间如下图所示:
ADO.NET只需要2毫秒,而Entity Framework需要超过4毫秒。
第二次执行的结果
当我在单次运行中反复运行此方法时,ADO.NET和EF之间的平均执行时间并没有太大差别:
问题
- 我认为EF在第一次执行时性能非常差,那么为什么我们要使用EF?
- 为什么EF的第二次执行比第一次执行要快?