性能分析ADO.NET和Entity Framework。

21 浏览
0 Comments

性能分析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次时,平均执行时间如下图所示:

first result

ADO.NET只需要2毫秒,而Entity Framework需要超过4毫秒。

第二次执行的结果

当我在单次运行中反复运行此方法时,ADO.NET和EF之间的平均执行时间并没有太大差别:

second result

问题

  1. 我认为EF在第一次执行时性能非常差,那么为什么我们要使用EF?
  2. 为什么EF的第二次执行比第一次执行要快?
0