哪一个提供更好的性能?ADO.NET 或实体框架。
这是我要分析的两种方法。
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 次时。平均执行时间如图所示:
无论实体框架花费超过 4 毫秒,ADO.NET 只花费了 2 毫秒。
导致第二次执行
当我一次又一次地运行这个方法时。ADO.NET 和 EF 之间的平均执行时间并不多:
问题
- 我认为 EF 在第一次执行时性能非常差 那么我们为什么要使用 EF?
- 为什么 EF 第二次执行比第一次执行快?