登录
注册
论坛
共享空间
搜索
帮助
用户名:
密码:
会员
界面
简洁版本
在线
共享社区
编程技巧共享
.NET编程技巧共享
DataRabbit 轻量的数据访问框架(13)--DataRabbit 3.0 ORM性能大幅度提升!
帖子标题
编程技巧共享
JAVA编程技巧共享
.NET编程技巧共享
WEB编程相关文章
互联网资源共享社区
商业智能共享
.NET源码共享
JAVA源码共享
开发工具共享
网页资料共享
教学资源共享
娱乐信息共享
精品游戏共享
老猫的理想信息区
技术交流区
业界新闻区
企业招聘
项目供求
广而告之
老猫的理想-共享社区站务区
站务管理
意见投诉
1
/ 1 页
1
跳转
页
查看:
448
DataRabbit 轻量的数据访问框架(13)--DataRabbit 3.0 ORM性能大幅度提升!
mikecat
迈克老猫
个人空间
组别:
管理员
性别:
来自:
中国-石家庄
积分:
2235
帖子:
1903
注册:
2007-12-31
2008-06-06 21:35
|
只看楼主
树型
|
收藏
|
小
中
大
1
DataRabbit 轻量的数据访问框架(13)--DataRabbit 3.0 ORM性能大幅度提升!
DataRabbit 3.0重写了DataRabbit 2.0的ORM实现的内核,性能提升了90倍左右,结果是DataRabbit 3.0的ORM性能与直接使用ADO.NET的性能已经非常接近。这是如何做到的?
主要是基于两点:
(1)DataRabbit 2.0 基于泛型和反射实现,而DataRabbit 3.0 基于泛型和Emit动态程序集实现。
DataRabbit2.0使用反射机制将值在O和R之间传递,如此大量使用反射会使性能折损不少。DataRabbit3.0在运行时,会根据Table的Schema动态发射(Emit)针对该表的数据访问器(Accesser)于内存中,并缓存它。DataRabbit 3.0将直接使用发射得到的数据访问器来实现值在O和R之间的传递,完全避免的反射。
(2)缓存Table Schema。
2.0版本中,当IORMAccesser基于Transaction时,其所采用的ISchemaAccesser也是基于Transaction的,由于ISchemaAccesser基于Transaction,所以一个ISchemaAccesser对象在本次事务结束时也会释放,这使得已经获取的TableSchema无法缓存(虽然ISchemaAccesser自身有缓存Schema的功能)。于是,我修改IORMAccesser使其采用基于非事务的ISchemaAccesser,这样Table Schema就会被缓存下来以重复使用,避免了每次ORM Transaction访问数据库时,都需要去重新获取Schema所带来的性能损失。
(3)其它细节优化。
DataRabbit 2.0 与 DataRabbit 3.0关于ORM的性能对比。
(注:结算一局需要在同一Transaction中6次访问数据库,其中还包含了业务计算。)
下面给出
DataRabbit 3.0
的下载。
原文出处:
http://www.cnblogs.com/zhuweisky/
金鳞岂是池中物,一遇风云便化龙
发送短消息
查看公共资料
查找该会员全部帖子
UID:
1
精华:
46
威望:
102
金钱:
499.25 元
状态:
离线
<<
上一主题
|
下一主题
>>
1
/ 1 页
1
跳转
页
论坛跳转...
编程技巧共享
JAVA编程技巧共享
.NET编程技巧共享
WEB编程相关文章
互联网资源共享社区
商业智能共享
.NET源码共享
JAVA源码共享
开发工具共享
网页资料共享
教学资源共享
娱乐信息共享
精品游戏共享
老猫的理想信息区
技术交流区
业界新闻区
企业招聘
项目供求
广而告之
老猫的理想-共享社区站务区
站务管理
意见投诉
我的主题
我的帖子
我的精华
我的空间
帖子标题
空间日志
相册标题
作 者
我的主题
我的帖子
我的附件
我的精华
我的空间