【发布时间】:2013-02-27 09:06:03
【问题描述】:
哪一个提供更好的性能? 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 第二次执行比第一次执行更快?
【问题讨论】:
标签: c# performance entity-framework ado.net