给出一个简单的测试:
使用Dapper:
for (int i = 0; i < 10000; i++)
{
Connection.Execute("UPDATE User SET Name = 'Max'");
}此操作的持续时间如下所示,用StopWatch度量
RunTime 00:00:37.51持续时间: 00:00:37.5150734
使用Dapper的:
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持续时间: 00:00:39.8553959
我在不同的场景中做了这个测试,Dapper总是比Dapper +更快。
问题很清楚,为什么Dapper比Dapper Plus快?是什么导致了这样的事情?
注意:我在实体框架中使用Sqlite
发布于 2020-04-23 23:48:37
为什么Dapper比Dapper Plus快?是什么导致了这样的事情?
BulkUpdate,顾名思义,用于批量更新(即一次更新多个行)。你是在一次一次叫它。您想要对它执行单人调用,而不是10,000次,以获得好处。
( b)后一种代码可能需要以前一种代码不需要的方式进行反射(例如,认识到存在Name属性),这将导致一些性能成本。
几乎可以肯定的是,你需要做的是。另外,使用更有意义的测试来更新10,000个不同的行--而不是同一行10,000次(因为使用当前代码,最简单的修复方法是只执行一次,而不是10,000次--但我怀疑这不是您想要的)。
https://stackoverflow.com/questions/61398658
复制相似问题