为什么 Dapper 比 Dapper plus 快?

Why Dapper faster than Dapper plus?

给出一个简单的测试:

使用 Dapper:

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

此操作的持续时间如下用StopWatch测量:

RunTime 00:00:37.51 Duration: 00:00:37.5150734 Duration in Milli seconds: 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测量:

RunTime 00:00:39.85 Duration: 00:00:39.8553959 Duration in Milli seconds: 39855

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

问题很明确了,为什么Dapper比Dapper Plus快?什么会导致这样的事情?

注意:我将 Sqlite 与 entity framework

一起使用

why is Dapper faster than Dapper Plus? What can cause such a thing?

a) BulkUpdate,顾名思义,用于批量更新(即一次更新多行)。你一次一个地调用它。您想对其进行 single 次调用,而不是 10,000 次,以获得收益。

b) 后一个代码可能需要反射(例如,以前一个代码不需要的方式实现 Name 属性)。这将产生一些性能成本。

修复 a) 几乎肯定是您需要做的。 此外,使用更有意义的测试,您将更新 10,000 行不同的行 - 而不是同一行 10,000 次(因为对于您当前的代码,最简单的解决方法是让它只执行一次而不是 10,000 次 - 但我怀疑那不是你想要的)。