欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ORM框架之Dapper简介和性能测试

程序员文章站 2022-06-22 12:08:07
dapper的简介dapper是.net下一个micro的orm,它和entity framework或nhibnate不同,属于轻量级的,并且是半自动的。dapper只有一个代码文件,完全开源,你可...

dapper的简介

dapper是.net下一个micro的orm,它和entity framework或nhibnate不同,属于轻量级的,并且是半自动的。dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的orm操作,体积小速度快。 使用orm的好处是增、删、改很快,不用自己写sql,因为这都是重复技术含量低的工作,还有就是程序中大量的从数据库中读数据然后创建model,并为model字段赋值。这些orm都可以轻松给你搞定。orm给我们开发带来便利时,性能也是一个让我们不得不考虑的问题。一般的orm性能和直接写原生的sql比都差不少,但是dapper性能还很错,甚至和dbhelpersql方式性能高出很多。

dapper的优势

  1. dapper是一个轻型的orm类。代码就一个sqlmapper.cs文件,编译后体积小。
  2. dapper很快。dapper的速度接近与idatareader,取列表的数据超过了datatable。
  3. dapper支持多数据库。诸如:mysql,sqllite,mssql系列,oracle等一系列的数据库。
  4. dapper的r支持多表并联的对象。支持一对多 多对多的关系。并且没侵入性,想用就用,不想用就不用,无xml无属性,代码以前怎么写现在还怎么写。
  5. dapper原理通过emit反射idatareader的序列队列,来快速的得到和产生对象,性能高。
  6. dapper支持net2.0及以上版本
  7. dapper语法十分简单,并且无须迁就数据库的设计。

dapper的性能

dapper 的主要特点是性能。以下数据显示对一个数据库执行 select 出 500 条,并把数据映射到对象中需要多长时间。

性能测试分为三个方面:

  1. poco 序列化框架,支持从数据库获得静态类型的对象。使用原始的 sql。
  2. 动态序列化框架,支持返回对象的动态列表。
  3. 典型的框架用法。往往不会涉及编写 sql。

1. performance of select mapping over 500 iterations - poco 序列化

方法 持续时间(毫秒) 备注
hand coded (using a sqldatareader) 47 can be faster
dapper executemapperquery 49 同上
servicestack.ormlite (querybyid) 50 同上
petapoco 52 同上
bltoolkit 80 同上
subsonic codinghorror 107 同上
nhibernate sql 104 同上
linq 2 sql executequery 181 同上
entity framework executestorequery 631 同上

2. performance of select mapping over 500 iterations - dynamic 序列化

方法 持续时间(毫秒) 备注
dapper executemapperquery (dynamic) 48  
massive 52  
simple.data 95  

3. performance of select mapping over 500 iterations - 典型用法

方法  持续时间(毫秒) 备注
linq 2 sql compiledquery 81 not super typical involves complex code
nhibernate hql 118  
linq 2 sql 559  
entity framework 859  
subsonic activerecord.singleordefault 3619  

其他见解:

  1. 能很方便地执行数据库 dml 和 dll 操作。比如,当你执行一个带参数的 sql 时,sql 中的变量能与你传递给它的实体或匿名对象中的属性,自定匹配。而我们知道,带参数的 sql,能提高数据库执行 sql 的效率。
  2. 能很方便地将数据库检索结果映射为面向对象的对象。从数据库中的检索结果,通常是张二维表,如 datatable,而应用程序中是实体类,以及实体类的集合,那么 dapper 能够将 datatable 自动地映射成为实体类的集合。
  3. 能很方便地书写 sql 语句。比如,写多个 sql,用分号分隔。

到此这篇关于orm框架之dapper简介和性能测试的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。