我的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 ...
随机推荐
- js--webSocket入门
Websocket 1.websocket是什么? WebSocket是为解决客户端与服务端实时通信而产生的技术.其本质是先通过HTTP/HTTPS协议进行握手后创建一个用于交换数据的TCP连接, 此 ...
- Javascript 截取2位小数
今天在处理数据时,前台界面金额需要保留两位小数,所以只能使用Javascript 来进行截取. var regex = /([0-9]+\.[0-9]{2})[0-9]*/; var localMon ...
- linux TLS 线程本地变量
最近在写底层hook的时候, 涉及到线程安全问题, 最开始我设计的时候使用的互斥量, 但是考虑到都是底层函数,加锁会导致性能问题, 一直在思考优化方案, 后来偶然想到,java里面有线程本地变量的AP ...
- MongoDB的真正性能-实战百万用户一-一亿的道具
使用情景 开始之前,我们先设定这样一个情景: 1.一百万注册用户的页游或者手游,这是不温不火的一个状态,刚好是数据量不上不下的一个情况.也刚好是传统MySql数据库性能开始吃紧的时候. 2.数据库就用 ...
- php [] array的区别
<?php/** * Created by IntelliJ IDEA. * User: Administrator * Date: 2017/1/2 * Time: 17:40 定义数组 ar ...
- silverLight--绑定数据dataGrid
后台代码编写 ,为表格绑定数据: using System; using System.Collections.Generic; using System.Linq; using System.Net ...
- vs2013卸载后重新安装不能用了,如何解决
vs2013卸载后重新安装不能用了 据说VS卸载后有残留文件,估计是注册文件没删除,弄了很多方法,最后只有重装.你可以下载一个cclearn清理注册表,再装试试 我卸载完用360清理了一下 之后再安装 ...
- php怎么解决超链接中的中文参数转码问题?
如题,我需要通过前端的网页传递一个中文参数(如:电脑)给后端的PHP文件,传递方式是通过超链接 "index.php/search/keyword/电脑" ,很明显的中文在传递过程 ...
- BZOJ2683 简单题(CDQ分治)
传送门 之前听别人说CDQ分治不难学,今天才知道果真如此.之前一直为自己想不到CDQ的方法二很不爽,今天终于是想出来了一道了,太弱-- cdq分治主要就是把整段区间分成两半,然后用左区间的值去更新右区 ...
- [Leetcode][JAVA] Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...