DataRabbit 轻量的数据访问框架(13)-DataRabbit 3.0 ORM性能提升

转载 2011年01月20日 19:14:00

DataRabbit 3.0重写了DataRabbit 2.0的ORM实现的内核,性能提升了90倍左右,结果是DataRabbit 3.0的ORM性能与直接使用ADO.NET的性能已经非常接近。这是如何做到的?
   主要是基于两点:
(1)DataRabbit 2.0 基于泛型和反射实现,而DataRabbit 3.0 基于泛型和Emit动态程序集实现。
   DataRabbit 2.0使用反射机制将值在O和R之间传递,如此大量使用反射会使性能折损不少。DataRabbit 3.0在运行时,会根据Table的Schema动态发射(Emit)针对该表的数据访问器(Accesser)于内存中,并缓存它。DataRabbit 3.0将直接使用发射得到的数据访问器来实现值在O和R之间的传递,完全避免的反射。

(2)缓存Table Schema。
   2.0版本中,当IORMAccesser基于Transaction时,其所采用的ISchemaAccesser也是基于Transaction的,由于ISchemaAccesser基于Transaction,所以一个ISchemaAccesser对象在本次事务结束时也会释放,这使得已经获取的Table Schema无法缓存(虽然ISchemaAccesser自身有缓存Schema的功能)。于是,我修改IORMAccesser使其采用基于非事务的ISchemaAccesser,这样Table Schema就会被缓存下来以重复使用,避免了每次ORM Transaction 访问数据库时,都需要去重新获取Schema所带来的性能损失。

(3)其它细节优化。

   DataRabbit 2.0 与 DataRabbit 3.0关于ORM的性能对比。

(注:结算一局需要在同一Transaction中6次访问数据库,其中还包含了业务计算。)

   下面给出DataRabbit 3.0的下载。

   关于DataRabbit的更多介绍请见:DataRabbit 轻量的数据访问框架(00)- 序

高性能高效率Orm框架-JfireOrm介绍

Jfire-Orm框架高性能 动态sql Orm 自动转换 [TOC]框架优势快速的单表CURD操作 框架使用类对数据库表进行映射。通过执行类似代码session.save(entity),ses...
  • kuangzhanshatian
  • kuangzhanshatian
  • 2015年11月03日 13:35
  • 1276

ORM for Net主流框架汇总与效率测试

go:http://www.cnblogs.com/stone_w/archive/2011/09/30/2196292.html 框架已经被越来越多的人所关注与使用了,今天我们就来研究一下...
  • ArvinStudy
  • ArvinStudy
  • 2013年07月23日 11:41
  • 2750

一个超轻量级的 ORM 框架

在上集里,我与大家分享了有关“数据访问层”的相关解决方案。这里是上集的链接: http://my.oschina.net/huangyong/blog/265378 数据访问层说得专业一点就是 D...
  • rdhj5566
  • rdhj5566
  • 2016年10月18日 21:05
  • 1913

ORM映射的弊端以及它对数据库优化影响

首先简单的介绍下ORM关系对象映射的概念。虽然NOSQL现在在迅速崛起,但大多数人仍然在使用稳定的关系型数据库,我们将数据组织成记录存储在关系数据库中,每一行代表一条记录。现代编程中,面向对象技术应用...
  • huyanping
  • huyanping
  • 2013年02月01日 14:22
  • 5784

轻量级ORM框架——第一篇:Dapper快速学习

我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架 叫做dapper,而且被称为t...
  • huangxinchen520
  • huangxinchen520
  • 2016年09月11日 19:15
  • 2236

Python ORM 之间对比

Python ORM 之间对比 对于在文章里提到的每一种 Python ORM ,我们来列一下他们的优缺点:  SQLObject  优点: 采用了易懂的ActiveR...
  • permike
  • permike
  • 2016年08月10日 16:32
  • 2326

快速的搭建JFinal的ORM框架示例

刚把Spring MVC搭建完毕,在群里一个人问如何搭建JFinal + Httl,我就先打架了一个JFinal环境。 哎,纠结的是JFinal默认用的是Freemarker作为视图。 所以,打架...
  • yakson
  • yakson
  • 2013年12月11日 20:55
  • 37379

介绍几种ORM框架

ORM(object relation mapping) 对象关系映射关系 ,面向对象的对象模型和关系型数据之间的相互转换。基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想状态下...
  • changyinling520
  • changyinling520
  • 2017年02月24日 22:44
  • 4454

java集群优化——ORM框架查询优化原理

众所周知,当下的流行的企业级架构中,ORM一直是最基础的部分,在架构设计的底层,对逻辑层提供面向对象的操作支持,而事实总是和我们预想的有所偏差,ORM在提供了较好的操作体验时,也流失了一部分原生SQL...
  • xvshu
  • xvshu
  • 2015年07月27日 17:32
  • 1390

ORM框架的学习总结

1. 什么是ORM?对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数...
  • jianyuerensheng
  • jianyuerensheng
  • 2016年03月04日 17:34
  • 8466
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataRabbit 轻量的数据访问框架(13)-DataRabbit 3.0 ORM性能提升
举报原因:
原因补充:

(最多只允许输入30个字)