3

我正在关注Dapper 社区创建的性能测试。

目前,我在运行测试 10000 次后得到以下结果:

  • EF 5 = 21595 毫秒
  • ADO.NET = 52183 毫秒
  • 小巧玲珑 = 52499 毫秒
  • iBatis = 83138 毫秒

我需要一些东西来帮助我理解为什么 EF 更快。 我做错了什么?

我使用的代码在Github上

谢谢!!!

4

1 回答 1

6

首先,EF 确实变得更快了:他们投入了大量时间来提高性能——根据我的大部分衡量标准,它仍然有明显的开销。考虑:EF 位于 ADO.NET 之上。如果 EF 报告的结果比 ADO.NET快得多,那么(我认为您已经怀疑这一点):您没有测量您认为正在测量的内容。

怀疑这里的关键问题是您正在同一数据上下文中执行所有操作。这意味着您现在可能只是强调身份管理器和缓存。我无法直接运行您的代码(因为它使用 Oracle 等),但查看执行的实际查询会很有趣。在现实世界的使用中,每个数据上下文都有一个有限的工作单元生命周期。在同一个数据上下文上执行 10,000 次操作是非常罕见的。更典型的是少数操作。

但是,不相关:我不得不说:我高兴您的结果显示 dapper 与原始 ADO.NET 性能相差不到 0.6%。这基本上正是我们使用 dapper 所追求的:原始 ADO.NET 的全部性能,但只是消除了编码的痛苦。

于 2013-09-30T09:13:29.470 回答