一个Entity Framework、ADO.NET查询性能测试
Entity Framework自然是会比ADO.NET性能慢点,这个不多说了。直接上结果。
本该用测试项目的,不过我建了个aspx。下面是随便测20遍得到的结果

补充!!把12行改成 list = db.Role.AsNoTracking().ToList();
由于这只做查询,不需要上下文进行跟踪。效率瞬间提升平均3-5倍,超越SqlDataAdapter,(其实很多人用SqlDataAdapter而不是用SqlCommand)
测试代码(建aspx,nuget拿EF6.1dll,建数据库建表Role,自己插入6万条数据,有主键自增)
string connStr = "server=localhost;database=EF;uid=sa;pwd=your1234;Persist Security Info=True";
List<Role> list = new List<Role>();
DateTime start = DateTime.MinValue;
DateTime end = DateTime.MinValue;
Response.Write("查询6万条数据耗时测试 <br />");
using (var db = new DBContext(connStr))
{
start = DateTime.Now;
list = db.Role.ToList();
end = DateTime.Now;
Response.Write("EF6.1,耗时:" + (end - start).ToString() + " <br />");
}
start = DateTime.Now;
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand cmd = new SqlCommand("select * from [Role]", conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
list.Add(new Role()
{
ID = dr.GetInt32(),
Name = dr.GetString(),
Desc = dr.GetString(),
CreateDate = dr.GetDateTime(),
ModifyDate = dr.GetDateTime()
});
}
dr.Close();
end = DateTime.Now;
Response.Write("ADO.NET SqlCommand + SqlDataReader,耗时:" + (end - start).ToString() + " <br />");
start = DateTime.Now;
SqlDataAdapter sda = new SqlDataAdapter("select * from [Role]", conn);
var ds = new DataSet();
sda.Fill(ds);
list = (from item in ds.Tables[].AsEnumerable()
select new Role
{
ID = item.Field<int>("ID"),
Name = item.Field<string>("Name"),
Desc = item.Field<string>("Desc"),
CreateDate = item.Field<DateTime>("CreateDate"),
ModifyDate = item.Field<DateTime>("ModifyDate"),
}).ToList();
conn.Close();
end = DateTime.Now;
Response.Write("ADO.NET SqlDataAdapter + DataSet,耗时:" + (end - start).ToString() + " <br />");
EF其实是不错的东西,楼主很喜欢;很多人说EF性能差,不过我觉得EF很利于开发进度。
一个Entity Framework、ADO.NET查询性能测试的更多相关文章
- 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明
一.首先了解下Entity Framework 自动关联查询: Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载) ...
- Entity Framework入门教程: Entity Framework支持的查询方式
Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...
- Entity Framework常用的查询方式
Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...
- Entity Framework做IN查询
开发中遇到的Too high level of nesting for select错误 项目使用了Entity Framework结合Mysql, 遇到了一个非常奇怪的性能问题,一个看起来非常简单的 ...
- Entity Framework Core Like 查询揭秘
在Entity Framework Core 2.0中增加一个很酷的功能:EF.Functions.Like(),最终解析为SQL中的Like语句,以便于在 LINQ 查询中直接调用. 不过Entit ...
- Entity Framework中实现查询的几种方法
在介绍几种方法前,献上一张图,希望图的作者不要追究我的盗图之过.本文的内容是我自学时的笔记,自学的内容来自网络.手打的代码,切不可直接复制过去用,会有好多错别字什么的. Entity SQL 类似于S ...
- 如何使用 Entity Framework 构造动态查询表达式
一般的程序员做上几年以后, 或多或少的都有些代码的积累, 我也不例外. 作为微软技术程序员, 自从Linq和EF出来之后, 就基本上爱不释手了, 且不说执行效率的问题, 单单就开发效率和代码的可移植性 ...
- 发现了一个entity framework的BUG
小弟学浅才疏可能是小题大做,但遇上了并且让我麻烦了一阵,就值得记下来 BUG的过程就是我在建立实体模型的时候 命名了一个叫system的实体模型 导致了所有生成类中 引用using system失败
- Entity Framework 多对多查询的写法
同学们,看下面的代码段就明白了: 一对多: public ICollection<ReportLookup> GetReportLookup(IEnumerable<Guid> ...
随机推荐
- [kali] 安装完kali之后允许远程ssh
1. 安装kali 2.控制台登录kali 3. 修改 /etc/ssh/sshd_config 4.将 permitrootlogin 前面的注释去掉,并且后面改为yes 5.然后重启ssd服务 / ...
- mysql数据库优化大全
转载:https://blog.csdn.net/weixin_38112233/article/details/79054661 数据库优化 sql语句优化 索引优化 加缓存 读写分离 分区 分布式 ...
- 买了本Delphi面向对象编程思想,正在看,产生些问题。
1:第33页说,Delphi通过调用类的一个构造函数来建立一个对象的实例,对象至少有一个create()的构造函数,使用时候写MyObject:=TmyObject.create即可. 但是第37 ...
- 重温Delphi之:面向对象
任何一门语言,只要具备了"封装,继承,多态"这三项基本能力,不管其实现方式是直接或曲折.复杂或简洁,就可以称之为“面向对象”的语言. Delphi当年的迅速走红,是以其RAD快速开 ...
- Highcharts之折线图
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- ZooKeeper客户端 zkCli.sh 节点的增删改查
zkCli.sh 在 bin 目录下的 zkCli.sh 就是ZooKeeper客户端 ./zkCli.sh -timeout 5000 -server 127.0.0.1:2181 客户端与 ...
- python---集合及深浅copy
一.集合 相信大家都在数学中接触过集合,在python中集合也是有这相同的性质,1.去重,集合会将内部元素自定去重 2.关系测试,类似数学中的交集并集子集一样 1.1如何创建集合 集合在python中 ...
- 自学Linux Shell12.3-case命令
点击返回 自学Linux命令行与Shell脚本之路 12.3-case命令 有了case命令,就不需要写出所有elif语句来不停的检查同一个变量的值了.case命令会采用列表格式来检查单个变量的多个值 ...
- loj #117. 有源汇有上下界最小流
题目链接 有源汇有上下界最小流,->上下界网络流 注意细节,边数组也要算上后加到SS,TT边. #include<cstdio> #include<algorithm> ...
- 洛谷 P1691 有重复元素的排列问题 解题报告
P1691 有重复元素的排列问题 题目描述 设\(R={r_1,r_2,--,r_n}\)是要进行排列的\(n\)个元素.其中元素\(r_1,r_2,--,r_n\)可能相同.使设计一个算法,列出\( ...