Performance analyze ADO.NET and Entity Framework

Niventh picture Niventh · Feb 27, 2013 · Viewed 50.1k times · Source

Which one gives better performance? ADO.NET or Entity Framework.

These are the two method I want to analyze.

ADO.NET Test Method

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);
}

Entity Framework Test Method

public void EFTest()
{
    Stopwatch stopwatch = Stopwatch.StartNew();
    var list = _OnlineStoreEntities.Products.ToList();
    stopwatch.Stop();
    Console.WriteLine("Entity Framework Elapsed={0}", stopwatch.Elapsed);
}

Result in first time execution

When I ran this above method in more than 100 times. The average execution time is shown in the image:

first result

ADO.NET took only 2 milliseconds whether Entity Framework took more than 4 milliseconds.

Result in second time execution

When I ran this method again and again in single run. The average execution time between ADO.NET and EF is not much more:

second result

Question

  1. I think EF gives very worst performance in first time execution Then why we use EF?
  2. Why EF second time execution was faster than first time execution?

Answer

Sergey Berezovskiy picture Sergey Berezovskiy · Feb 27, 2013
  1. First time EF loads metadata into memory, that takes a time. It builds in-memory representation of model from edmx file, or from source code if you are using code first. Actually EF is build at the top of ADO.NET, so it can't be faster. But it makes development much faster. And improves maintainability of your code.
  2. See 1

Take a look on msdn article Performance Considerations (Entity Framework)