为什么Dapper比Dapper plus快?

给出一个简单的测试。

使用Dapper

for (int i = 0; i < 10000; i++)
{
      Connection.Execute("UPDATE User SET Name = 'Max'");
}

这个操作的持续时间是这样的: StopWatch:

运行时间 00:00:37.51 持续时间。00:00:37.5150734 持续时间(毫秒) 37515

使用Dapper plus。

User user = new User();
user.Name = "Max";
DapperPlusManager.Entity<User>().Table("User");
for (int i = 0; i < 10000; i++)
{
       Connection.BulkUpdate(user);
}

该操作的持续时间如下: StopWatch:

运行时间 00:00:39.85 持续时间。00:00:39.8553959 持续时间(毫秒) 39855

我在不同的场景下做了这个测试,Dapper的速度总是比Dapper加的快

问题很明显,为什么达人的速度比达人Plus快?什么原因会造成这样的情况?

注:我使用的是Sqlite与实体框架。

解决方案:

为什么Dapper比Dapper Plus快?什么原因会导致这样的情况?

a) BulkUpdate,顾名思义,是用于批量更新(即一次更新多行)。你把它叫做一次一列。你想做一个 单一 调用它,而不是一万个,才能得到好处。

b) 后面的代码很可能需要反思(比如要意识到有一个 Name 属性)的方式,而前者的代码没有。这将产生一些性能成本。

修复a)几乎可以肯定是你需要做的。另外,使用一个更有意义的测试,在这个测试中,你要更新10,000条不同的记录–而不是更新同一条记录10,000次(因为对于你目前的代码,最简单的修复方法是让它只执行一次,而不是10,000次–但我怀疑这不是你想要的)。

给TA打赏
共{{data.count}}人
人已打赏
未分类

在导航组件中检测弹出

2022-9-8 11:55:38

未分类

我不能用scrapy提取这个网址

2022-9-8 12:06:34

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索