Какой из них дает лучшую производительность? 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);
}
Метод проверки платформы Entity Framework
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 было быстрее, чем выполнение в первый раз?