Performance analyze ADO.NET and Entity Framework(性能分析 ADO.NET 和实体框架)
问题描述
哪一个提供更好的性能?ADO.NET 或实体框架.
Which one gives better performance? ADO.NET or Entity Framework.
这是我要分析的两种方法.
These are the two method I want to analyze.
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 次时.平均执行时间如图所示:
When I ran this above method in more than 100 times. The average execution time is shown in the image:
无论实体框架花费超过 4 毫秒,ADO.NET 仅花费 2 毫秒.
ADO.NET took only 2 milliseconds whether Entity Framework took more than 4 milliseconds.
导致第二次执行
当我一次又一次地运行这个方法时.ADO.NET 和 EF 之间的平均执行时间并不多:
When I ran this method again and again in single run. The average execution time between ADO.NET and EF is not much more:
问题
- 我认为 EF 在第一次执行时性能非常差那我们为什么要使用 EF?
- 为什么 EF 第二次执行比第一次执行更快?
推荐答案
- EF 首次将元数据加载到内存中,这需要一些时间.它从 edmx 文件或源代码(如果您首先使用代码)构建模型的内存表示.实际上 EF 是在 ADO.NET 之上构建的,所以它不能更快.但它使开发速度快得多.并提高代码的可维护性.
- 见 1
查看 msdn 文章 性能注意事项(实体框架)
Take a look on msdn article Performance Considerations (Entity Framework)
这篇关于性能分析 ADO.NET 和实体框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:性能分析 ADO.NET 和实体框架
基础教程推荐
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- 将 XML 转换为通用列表 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01