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动态程序集实现。
   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工具 DataRabbit3.2

2009年02月18日 529KB 下载

DataRabbit

2009年12月19日 153KB 下载

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭