我的ORM之十三 -- 性能参数
测试环境
台式机:
主板:映泰Z77
CPU:i5 3470(3.2GHz)
内存:DDR3 1600 8G(单条)
硬盘:创见 SSD 256G
ORM从过程上,可以分两个大的部分:
- 生成SQL
- 把返回的数据(DataReader 或 DataSet)转换成 强类型的结果集
生成SQL测试
用比较复杂的查询(为了测试,查询生成的SQL不能执行,仅为了测试生成SQL的性能)
public ActionResult TestGenSqlP()
{
Stopwatch sw = Stopwatch.StartNew();
for (int i = ; i < ; i++)
{
dbr.PUser
.Select(o => new Columns(o.Id, o.Name.JoinStr()))
.Join(dbr.Corporation, (a, b) => a.Id == b.Id)
.Join(dbr.City, (a, b) => a.Id == b.Id)
.Join(dbr.Annex, (a, b) => a.Id == b.Id)
.Join(dbr.Bank, (a, b) => a.Id == b.Id)
.Join(dbr.CorpUser, (a, b) => a.Id == b.UserID)
.Join(dbr.Menu, (a, b) => a.Id == b.Id)
.Where(o => o.Id > & o.Name == "abc" & o.Logo > & o.CreateAt.IsSameDay("2015-05-26".AsDateTime()))
.OrderBy(o =>
dbo.CaseWhen(dbr.PUser.Id < , new ConstColumn())
.WhenThen(dbr.PUser.Id.Between(, ), new ConstColumn())
.ElseEnd(new ConstColumn())
.Asc)
.AutoGroup()
.ToCommand();
} return Content(sw.ElapsedMilliseconds.ToString());
}
三次结果:(毫秒)
5950
5804
5801
平均每次生成SQL时间: 0.6毫秒
数据对象化测试
单条数据:
public ActionResult TestToObjectP()
{
using (new MyOqlConfigScope(ReConfigEnum.SkipPower))
{
var menus = dbr.Menu.Select().ToMyOqlSet(); Stopwatch sw = Stopwatch.StartNew();
for (int i = ; i < ; i++)
{
dbo.DictionaryToModel(menus.Rows[i % menus.Rows.Count], new MenuRule.Entity());
} return Content(sw.ElapsedMilliseconds.ToString());
}
}
三次结果:(毫秒)
237
229
241
强类型化一条数据,平均时间: 0.025毫秒
强类型化单条和多条,底层是一样的。就不用测试了。
我的ORM之十三 -- 性能参数的更多相关文章
- Django之ORM字段和字段参数
ORM介绍 ORM概念 ORM由来 ORM的优势 ORM的劣势 ORM总结 Django中的ORM Django项目使用MySQL数据库 Model 快速入门 字段 自定义字段 字段参数 Model ...
- 记录bigdesk中ElasticSearch的性能参数
定时采集bigdesk中的Elasticsearch性能参数,并保存到数据库或ELK,以便于进行长期监控. 基于python脚本实现,脚本如下: #coding=gbk import httplibi ...
- Tomcat性能参数设置
Tomcat性能参数设置 Tomcat性能参数设置 博客分类: Java LinuxTomcat网络应用多线程Socket 默认参数不适合生产环境使用,因此需要修改一些参数 1.修改启动时内存参数.并 ...
- Django ORM 常用字段和参数
Django ORM 常用字段和参数 一:常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. I ...
- ORM常用字段和参数
目录: ORM常用字段和参数
- 关于获取Windows下性能参数的总结
Windows下特定进程或者所有进程的CPU.物理内存.虚拟内存等性能参数的获取方法小结,包括如何在MFC中以及如何使用C#语言来获取参数. VC API:GlobalMemoryStatus 获取全 ...
- 认识loadrunner及相关性能参数
认识loadrunner及相关性能参数 LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整 ...
- Django中ORM介绍和字段参数
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- Django框架 之 ORM 常用字段和参数
Django框架 之 ORM 常用字段和参数 浏览目录 常用字段 字段合集 自定义字段 字段参数 DateField和DateTimeField 关系字段 ForeignKey OneToOneFie ...
随机推荐
- 日期对象-Date
新建日期对象 var date = new Date(); getTime() 从 1970年 1月 1日开始计算到 Date 对象中的时间之间的毫秒数. getFullYear() ...
- windows读取mac格式移动硬盘的方法
本文记录了一些window与mac数据在移动设备上互相拷贝的经验. 一.准备 家里有一台mac电脑,限于硬盘空间比较小,需要定期备份一些数据. 由于备份数据大小在20G左右,并且并没有压缩为一个压缩文 ...
- UIScrollView的三个属性
contentSize.contentOffset.contentInset UIScrollView的frame的size 指的是可视范围 contentSize 内容大小,滚动的范围 创 ...
- delegate notification kvo三者比较
IOS 如何选择delegate.notification.KVO? 前面分别讲了delegate.notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类 ...
- 2014NOIP前 计划
这几天天天刷水题活得很开心,是时候定一个计划了.想着我要在yzy左的吓人的歌声中看书,还是有点.... 大概就分成几类吧 数学//你们这群学霸啊 搜索 图论 dp 贪心 其他 每个不定具体时间,加油吧 ...
- 健忘vs总结
上周入职新公司,报道之前自己也曾想过要从头开始,用一个新的精神面貌来迎接新的起点,培养一些新的习惯. 周四是15日,新公司的发薪日(当然还没有我的份~),小组群内一个刚毕业的新人兴冲冲的说终于领到第一 ...
- Coursera Robotics系列课心得
Robotics Perception Professor Kostas and Jianbo Shi week 1: camera model 凸透镜成像原理:凸透镜焦点与焦距是固定的,这是物理性质 ...
- 今个忽然晓得,原来radio不是普通去获取值的!
今日,写js校验.对于不太会的,总是陌生的.碰见radio的取值,习惯的用document.getElementsByName("")[0].value去获取值,却忘记了radio ...
- php图片合成
<?php//===================== 新建一个新的 GD 图像流并输出图像========================//header("Content-typ ...
- Picard 法求方程根
要点: 首先对于任何方程 :f(x)=0 ,可以转换成 f(x)+x-x => f(x)+x=x; 取g(x)=f(x)+x; 那么 新方程g(x)=x 的解即是 f(x)=0的解,即g(x) ...