.NET 之 ORM 性能评测

Why

  1. 你应该总能听到某ORM性能比Dapper高

  2. 你应该有如下疑问:

    1. 基准测试是否权威

    2. 基准测试的方式是否合理

    3. 基准测试的标准是否能够统一

    4. 统一基准测试标准/规范

如何进行姿势正确的性能测试

相信大家对 Dapper 的性能,以及基准测试的权威性是没有疑问的(否则不会有那么多ORM在做性能测试的时候直接选型Dapper),那么我们就使用 Dapper 性能基准测试 来作为我们的基准测试模板,并加入一些没有纳入基准测试的 ORM 。这样从合理性/可信度就大体有了一个标准和保障。

接下来 fork Dapper GitHub 仓库,并添加了 SmartSql/IBatis.Net/FreeSql/SqlSugar/Chloe

源代码地址:https://github.com/Ahoo-Wang/Dapper,如对测试结果,测试方法有疑问请给我提交issue。

如何自己进行以上基准测试

强烈建议读者按照以下步骤自己运行基准测试。

  1. Git-Clone https://github.com/Ahoo-Wang/Dapper

  2. cd Dapper/Dapper.Tests.Performance

  3. dotnet publish -c release

  4. 运行 Dapper.Tests.Performance.exe

  5. 提示输入,请输入 "*" 运行所有基准测试

  6. 等待测试结果,目录:BenchmarkDotNet.Artifacts 下会有一个日志文件,和 results 文件夹 (测试结果文件存放在此目录)

640?wx_fmt=jpeg

基准测试结果

重要提示:FreeSql/SqlSugar 官方nuget包为非Release版本,所以测试结果会有影响,仅供参考。

BelgradeExecuteReaderPost78.74 us12.25000.6250-10.63 KB
LINQ to DB'First (Compiled)'Post97.61 us20.5000--2.67 KB
LINQ to DBQuery<T>Post103.05 us31.37500.1250-6.91 KB
Hand CodedSqlCommandPost107.37 us42.00001.00000.500012.29 KB
DapperQueryFirstOrDefault<dynamic>dynamic110.83 us52.87500.1250-13.57 KB
DapperQueryFirstOrDefault<T>Post111.65 us52.25001.00000.375013.53 KB
Hand CodedDataTabledynamic114.78 us62.00000.5000-12.51 KB
PetaPoco'Fetch<T> (Fast)'Post114.95 us62.25000.87500.250013.71 KB
Dapper'Query<dynamic> (buffered)'dynamic115.54 us62.25001.00000.250013.93 KB
PetaPocoFetch<T>Post119.76 us72.50001.00000.250014.66 KB
Dapper'Query<T> (buffered)'Post122.10 us82.25000.87500.375013.86 KB
Susanoo'Execut<dynamic> (Static)'dynamic122.68 us82.50000.75000.250015.03 KB
Massive'Query (dynamic)'dynamic122.82 us82.37500.87500.250014.25 KB
ServiceStackSingleById<T>Post123.93 us83.00000.75000.250017.59 KB
LINQ to DBFirstPost124.53 us81.12500.1250-5.53 KB
SmartSqlQuerySingleSqlParameterCollectionPost125.26 us82.50000.75000.250015.48 KB
SmartSqlQuerySinglePost126.79 us92.50000.75000.250015.59 KB
LINQ to SQL'First (Compiled)'Post127.17 us92.0000--9.87 KB
SmartSqlGetByIdPost127.24 us92.75000.75000.250015.89 KB
SmartSqlQuerySingleStrongRequestPost127.70 us92.50000.75000.250015.51 KB
SmartSqlQuerySingleFromXmlPost128.27 us92.75000.75000.250016.23 KB
Susanoo'Execute<T> (Static)'Post128.92 us92.50000.75000.250015.05 KB
SmartSqlQuerySingleStrongRequest<dynamic>dynamic129.88 us92.75001.00000.500016.54 KB
SmartSqlQuerySingleSqlParameterCollection<dynamic>dynamic130.96 us92.50000.75000.250016.51 KB
Dapper'Contrib Get<T>'Post132.10 us92.25001.00000.250014.51 KB
DevExpress.XPOFindObject<T>Post137.14 us106.50000.2500-29.97 KB
Susanoo'Execute<dynamic> (Cache)'dynamic140.24 us113.25001.00000.500020.48 KB
Susanoo'Execute<T> (Cache)'Post141.23 us113.25000.75000.250020.96 KB
EF 6SqlQueryPost154.68 us124.75000.7500-27.96 KB
DevExpress.XPOGetObjectByKey<T>Post160.87 us135.25001.2500-32.35 KB
IBatisQueryForObjectPost163.87 us142.75000.75000.250016.59 KB
Dapper'Query<T> (unbuffered)'Post166.28 us152.25000.75000.250013.89 KB
Dapper'Query<dynamic> (unbuffered)'dynamic171.82 us162.25000.75000.250013.93 KB
DevExpress.XPOQuery<T>Post172.38 us167.50000.2500-35.02 KB
FreeSqlFromSqlFirstDynamicdynamic180.44 us173.25000.75000.250019.38 KB
EF Core'First (Compiled)'Post188.02 us183.5000--16.14 KB
FreeSqlFromSqlFirstPost196.92 us193.25000.75000.250019.17 KB
NHibernateGet<T>Post201.46 us205.75000.7500-32.62 KB
NHibernateHQLPost207.57 us215.50000.7500-35.11 KB
ChloeFirstPost209.26 us215.00000.75000.250029.85 KB
EF CoreSqlQueryPost234.51 us224.0000--20.64 KB
EF CoreFirstPost238.67 us234.2500--20.33 KB
EF 6FirstPost243.86 us2410.5000--48.44 KB
LINQ to SQLExecuteQueryPost250.54 us257.00001.00000.500042.48 KB
EF Core'First (No Tracking)'Post250.59 us253.75000.75000.250021.44 KB
NHibernateCriteriaPost256.87 us2611.00001.0000-65.64 KB
EF 6'First (No Tracking)'Post314.69 us279.00001.0000-55.27 KB
NHibernateSQLPost336.02 us2819.00001.0000-101.4 KB
FreeSqlFirstPost429.83 us295.00001.00000.500031.56 KB
SqlSugarFirstPost583.49 us3010.00001.0000-62.5 KB
LINQ to SQLFirstPost761.03 us313.00001.0000-14.7 KB
NHibernateLINQPost778.43 us3210.00002.0000-64.03 KB

原文地址:https://www.cnblogs.com/Ahoo-Wang/p/dotnet-orm-performance-test.html

 
 

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 
640?wx_fmt=jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值