实体框架4与实体框架3.5的性能如何?
我的页面上有一个查询需要至少半秒来执行EF 3.5。 当我使用存储过程时,速度明显更快。 这是一个非常复杂的查询。 在即将到来的EF 4.0中是否会有性能改进? EF 4.0是否真的击败了3.5性能呢?
简短的回答是现在说得太早。 .Net人几乎完全关注性能,直到4月12日发布的版本才能最终确定和本地化。 另外,更快的意思是什么? 更快速的可以通过多种方式查看,例如:
在你的具体情况下,除了一个非常复杂或高容量的查询之外,对于任何事情来说,半秒钟是很长的时间......你看看数据库花了多少时间以及花了多少时间.Net拥有数据? 如果你将大部分时间花在SQL以外,那么是的,在Net 4.0中反思的基本改进应该会为你提供一些速度提升......但是如果你花时间在SQL中,它并没有多大的帮助在所有。 大部分性能问题可能是生成的SQL索引,而非Entity Framework水合性能。
我会按照凯恩的评论,看看它生成查询的SQL,才有可能为您发布此,那就是快速的存储过程,所以我们也许可以找到问题所在?
从ADO.NET博客:
定制查询 - 增加对现有LINQ操作符的支持,通过LINQ识别更多的模式,编写模型定义的函数以及在LINQ中使用这些函数的能力,以及许多其他创建和定制查询的方法。
SQL生成可读性改进 - 提高生成查询的可读性以及TSQL性能优化,使其更容易理解正在发生的事情
所以这两点意味着你可以看到从LINQ生成查询的方式有所改进。
然而,ORM不太可能能够从头开始编写一个查询,因为它必须满足这么多不同的场景,通常最常见的查询是默认的查询。 当我使用EF 3.5时,EF 3.5似乎产生了一些非常高效的连接SQL,可能是我从ORM中看到的最好的连接,所以希望能够在4.0中抛弃SP。
如果你有一个存储过程,我猜这是一个很大的查询 - 每次向服务器发送这个SQL文本将导致大量的网络流量,这是你可能考虑或可能没有考虑过的另一件事。 很明显,在同一台服务器上或同一内部网络内部,这是一种'剪头发减肥'式的优化。
说到真正复杂的查询,我还没有看到任何证据表明任何L2S,NH或EF都可以生成比我在sproc中更好的查询计划。 我喜欢ORM(尤其是NH),但是仍然有很多时候ORM的执行时间可以通过一个写得很好的sproc来实现 。
链接地址: http://www.djcxy.com/p/44145.html上一篇: How is the performance of entity framework 4 vs entity framework 3.5?