Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。Dapper只有一个代码文件,完全开源,你可以放在项目里的任何位置,来实现数据到对象的ORM操作,体积小速度快。 使用ORM的好处是增、删、改很快,不用自己写sql,因为这都是重复技术含量低的工作,还有就是程序中大量的从数据库中读数据然后创建model,并为model字段赋值。这些ORM都可以轻松给你搞定。ORM给我们开发带来便利时,性能也是一个让我们不得不考虑的问题。一般的ORM性能和直接写原生的sql比都差不少,但是Dapper性能还很错,甚至和DbHelperSQL方式性能高出很多。
Dapper 的主要特点是性能。以下数据显示对一个数据库执行 SELECT 出 500 条,并把数据映射到对象中需要多长时间。
性能测试分为三个方面:
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 |
|
其他见解: