• 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) -- 序
  • 相关阅读:
    js开发笔记
    安全相关开发笔记
    常用.NET库使用总结
    Windows使用总结
    .NET Web开发笔记
    Unity插件使用总结
    WinForm开发笔记
    C#开发笔记
    iTunes使用总结
    Mac使用总结
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/834387.html
Copyright © 2020-2023  润新知