我需要最新的 .NET 映射器基准测试数据,但这些数据并不存在。

发布日期:2026-06-24 10:01:38   浏览量 :4
发布日期:2026-06-24 10:01:38  
4

AutoMapper 不再是无脑首选的那一天

多年来,AutoMapper 一直是默认选择。你添加 NuGet 包,编写一个配置类,然后就再也不去管它了。但在 2025 年,这种情况对我而言发生了改变。

几乎接连发生了两件事:

  1. AutoMapper 转向商业化。 2025 年 7 月 2 日,吉米·博加德(Jimmy Bogard)宣布,通过新公司 Lucky Penny Software 推出 AutoMapper(以及 MediatR)的商业版本。对于个人以及年收入低于 500 万美元的公司,它仍然是免费的,但超过这一规模的公司现在需要购买付费许可证。(公告
  2. 最后一个可免费修补的版本出现了一个高危通用漏洞披露(CVE)。 CVE-2026-32933(通用漏洞评分系统 7.5,高危)是一个通过不受控递归导致的拒绝服务漏洞:映射深度嵌套的对象图会导致 StackOverflowException(堆栈溢出异常),从而使整个进程崩溃,而在现代 .NET 中,你甚至无法捕获它。问题在于?修复程序已合并到付费版本(15.1.1 / 16.1.1)中。

因此,如果你使用的是免费版本,你就坐视一个已知的拒绝服务漏洞,且没有免费的升级路径。在工作中,这意味着一件事:我们必须从每个项目中迁移移除 AutoMapper。

问题所在:没有人拥有最新的数据

候选方案并不少:MapperlyMapsterTinyMapperAgileMapper,或者只是手动编写映射代码。困难之处不在于寻找选项,而在于确定在生产环境中真正值得信任哪一个,这是一个你需要依靠数据而非感觉来做出的决定。

我去寻找基准测试,却碰壁了:

  • 大多数比较都是多年前的
  • 没有任何测试是在 .NET 10 上运行的。
  • 库版本已过时,因此结论不再适用。
  • 每个人基准测试的场景都略有不同,因此无法进行公平比较。

性能特征会随着每个运行时和每个库的发布而变化。2021 年的基准测试对于 .NET 10 上的 Mapperly 4 几乎没有任何参考价值。我不想要一个静态快照。我想要一些随时间推移保持真实有效的东西。

所以我构建了它。

解决方案:永不过时的基准测试

我构建了一个 BenchmarkDotNet 运行器,用于在一致的场景下测量主要的 .NET 映射库的性能,并配备了一个小型落地页来展示结果。

它与那些“我在 2022 年某个下午基准测试了这些库”的文章有何不同:

  • 它在专用的虚拟专用服务器(VPS)上每小时自动运行一次
  • 库版本会自动更新至最新版本,因此数据始终反映你今天实际会安装的内容。
  • 结果取最近 3 个月的平均值,以平滑噪声并显示长期趋势,而非单次幸运运行的结果。
  • 没有原始 JavaScript 对象表示法(JSON),没有冗长的标记语言(Markdown)文本块,只有干净、交互式的图表。

我测量的内容

四个涵盖你在实际代码中遇到的场景:

场景 压力测试重点
SimpleFlat 扁平普通旧 CLR 对象(POCO)到 POCO,名称相同
NestedObject 包含嵌套类型的对象图
Collection 映射列表/数组

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9