一个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> ...
随机推荐
- ngnix使用超时响应时间配置避坑一例
ngnix的超时响应时间配置得比tomcat的spring mvc响应时间还小,悲剧就发生了,生产环境还不易发现. 就好比定制固定木柜没考虑进门的尺寸,横竖斜都进不去,太悲剧了.哈哈哈,以此为鉴!~
- MySql绿色版安装配置
首先从官网下载MySQL的安装文件:http://dev.mysql.com/downloads/file.php?id=456318(直接选择No thanks, just start my dow ...
- Sqlite,libevent,openssl,mosquito交叉编译
一.设置交叉编译环境 在makefile所在目录(或源代码根目录)打开终端. 在终端中设置交叉编译所需的临时环境变量(也可写到配置文件中设置为全局环境变量),其中交叉编译工具链的名称和目录需要根据实际 ...
- [转帖] BIO与NIO、AIO的区别
培训里面讲的东西 自己查了下 啥意思,,, 转帖强化一下. http://blog.csdn.net/skiof007/article/details/52873421 IO的方式通常分为几种,同步 ...
- php的一些算法题
1.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,请编程输出两年内每个月的兔子总数为多少? <?php function getRes ...
- 小项目分析之C++ 实现模拟银行排队
一.问题定义与分析 问题定义 •要解决的问题——银行一天之内的: 1.总客户数 2.客户总逗留时间 3.客户平均逗留时间 问题分析 •新来的人找个短的队伍,站在队尾开始排队 •排在队头的人可以办理 ...
- 如何为TreeView定义三层模板并实现数据绑定
一直以来都想对TreeView定义多层模板,并实现数据绑定做一个总结,今天在这里做一个概述,我们常用的两层的TreeView绑定的话,我们首先修改TreeView的模板,这里我们使用的是级联的数据模板 ...
- 微信小程序开发UI组件
第一 view和input和button组件 1.UI组件的通用属性 (1)id 唯一标识 (2)class 设置组件的样式类 (3)style 设置组件的内联样式 (4)hidden ...
- linux系统下find命令的使用
1.find /* -name erlang 当前目录下,查找名为erlang的文件和目录 find /* -name rabbitmq-server 当前目录下,查找名为 rabbitmq-serv ...
- cordic——sincos
phase format :scaled radians,归化到多少pi roundmode :nearest even 近似值 coarse rotation: selected-pi——pi.no ...