我的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之十三 -- 性能参数的更多相关文章

  1. Django之ORM字段和字段参数

    ORM介绍 ORM概念 ORM由来 ORM的优势 ORM的劣势 ORM总结 Django中的ORM Django项目使用MySQL数据库 Model 快速入门 字段 自定义字段 字段参数 Model ...

  2. 记录bigdesk中ElasticSearch的性能参数

    定时采集bigdesk中的Elasticsearch性能参数,并保存到数据库或ELK,以便于进行长期监控. 基于python脚本实现,脚本如下: #coding=gbk import httplibi ...

  3. Tomcat性能参数设置

    Tomcat性能参数设置 Tomcat性能参数设置 博客分类: Java LinuxTomcat网络应用多线程Socket 默认参数不适合生产环境使用,因此需要修改一些参数 1.修改启动时内存参数.并 ...

  4. Django ORM 常用字段和参数

    Django ORM 常用字段和参数 一:常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. I ...

  5. ORM常用字段和参数

    目录: ORM常用字段和参数

  6. 关于获取Windows下性能参数的总结

    Windows下特定进程或者所有进程的CPU.物理内存.虚拟内存等性能参数的获取方法小结,包括如何在MFC中以及如何使用C#语言来获取参数. VC API:GlobalMemoryStatus 获取全 ...

  7. 认识loadrunner及相关性能参数

    认识loadrunner及相关性能参数 LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整 ...

  8. Django中ORM介绍和字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  9. Django框架 之 ORM 常用字段和参数

    Django框架 之 ORM 常用字段和参数 浏览目录 常用字段 字段合集 自定义字段 字段参数 DateField和DateTimeField 关系字段 ForeignKey OneToOneFie ...

随机推荐

  1. RPM包的制作

    RPM包的制作 前言 按照其软件包的格式来划分,常见的Linux发行版主要可以分为两类,类ReadHat系列和类Debian系列,这两类系统分别提供了自己的软件包管理系统和相应的工具. 类RedHat ...

  2. 一个简单算法题引发的思考<DNA sorting>(about cin/template/new etc)

    首先是昨天在北京大学oj网上看到一个简单的算法题目,虽然简单,但是如何完成一段高效.简洁.让人容易看懂的代码对于我这个基础不好,刚刚进入计算机行业的小白来说还是有意义的.而且在写代码的过程中,会发现自 ...

  3. Office组件之Spire.XLS的DotNet操作

    Overview 在项目中,我们经常需要将程序中获得的大量数据导出到Excel表格中,打印报表:进一步,还可能生成其折线图,对数据的变化趋势进行分析,从而更好地开展项目工作. 最近,我发现了一个对于D ...

  4. jQuery 菜单栏 展开与收缩例子

    废话少说,上代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  5. oracle 密码过期处理

    1.查看用户的proifle是哪个,一般是default sql>SELECT username,PROFILE FROM dba_users; 2.查看指定概要文件(如default)的密码有 ...

  6. Chocolatey

    知乎上有人提到如何节省时间, 1.自动化 2.批量化 Chocolatey (https://chocolatey.org/)是一个自动化程序安装工具.今天试用了一下 ,想想每年因为安装软件而损失的时 ...

  7. Codevs 1021 (玛丽卡)

    题目描述 Description 麦克找了个新女朋友,玛丽卡对他非常恼火并伺机报复. 因为她和他们不住在同一个城市,因此她开始准备她的长途旅行. 在这个国家中每两个城市之间最多只有一条路相通,并且我们 ...

  8. 总结一下使用react-native的一些入门级重要点

    经过多方的协调沟通,我们决定至4.1日起,停止向新用户透出该服务:今年10.15以后,老用户也停止该服务(具体表现是网站上传APK-Android或者URL-iOS入口会下掉,已经发版的App,SDK ...

  9. NRF24L01--使用STM32F103

    看了两天的24l01的相关资料了,一直有点模糊,今天下午感觉有点懂了,在板子上调试成功了,但是还没进行通讯测试.stm32和arduino进行通信还没成功 ,:( 先把stm32的NRF24L01配置 ...

  10. invalidate()和postInvalidate()的使用与区别

    Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型: Android UI操作并不是线程安全的,并且这些操作必须在UI线程 ...