哪个表现更好?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 Time Elapsed={0}", stopwatch.Elapsed);
}
实体框架测试方法
public void EFTest()
{
Stopwatch stopwatch = Stopwatch.StartNew();
var list = _OnlineStoreEntities.Products.ToList();
stopwatch.Stop();
Console.WriteLine("Entity Framework Elapsed={0}", stopwatch.Elapsed);
}
第一次执行的结果
当我运行上述方法100多次时,平均执行时间如下图所示:
ADO.NET只用了2毫秒,而Entity Framework则需要超过4毫秒。
第二次执行的结果
当我连续单次运行这个方法时,ADO.NET和EF的平均执行时间差异不大:
问题:
- 我认为EF在第一次执行时表现得很差,那么我们为什么还要使用EF呢?
- 为什么EF第二次执行比第一次执行快?