Dapper和EF性能测试结果与预期不同?

理论上,dapper应该比EF速度快,现在为什么相反了? [图片] [图片]
关注者
12
被浏览
10,431

4 个回答

1.数据库本身也是存在"Cache缓存"的

2.EF(Linq) 只是一种程序层面进行的SQL转化 跟SQL关系不是太大

3.对同一个数据表(数据库原理上是对同一个表的索引列)进行的查询 会被缓存起来

4.Dapper内部源代码定义了一个缓存类 CacheInfo

综合1234 你的EF生成的SQL比较简单 所以速度快 这是第一 第二: 你的Dapper查询让数据库产生了 A BAS _XXXX表的缓存 所以EF第二次进行查询的时候速度就非常快了(EF艹了Dapper的缓存近路)

但如果你的SQL超过13张表联合查询 EF一定比Dapper慢8倍以上

又或者是 你Rows数量超过 一定的量级 Ef速度就会慢下来

换句话说 如果ADO.NET 比Linq还慢或者同样慢 那鬼还会去用ADO(Dapper)

数据量也有一定的关系,Dapper在转换从C#实例的速度据说有优势,所以可以多搞一些数据看比较。