EF 5基准测试

时间:2013-09-27 01:57:41

标签: c# entity-framework ado.net ibatis dapper

我正在关注Dapper社区创建的performance test

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

  • EF 5 = 21595 ms
  • ADO.NET = 52183 ms
  • Dapper = 52499 ms
  • iBatis = 83138 ms

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

我正在使用的代码位于Github

感谢!!!

1 个答案:

答案 0 :(得分:6)

首先,EF确实变得更快:他们投入了大量时间来提高性能 - 通过我的大部分措施,它仍然有明显的开销。考虑一下:EF位于ADO.NET之上。如果EF报告的结果比ADO.NET显着更快,那么(我认为您已经怀疑这一点):您没有测量您正在测量的想法

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

然而,无关:我不得不说:我非常对您的结果感到满意,显示dapper在原始ADO.NET性能的0.6%范围内。这基本上就是我们用dapper的目的:原始ADO.NET的完整性能,但只是消除了编码的痛苦。