给出一个简单的用户驱动的、高流量的web应用程序(没有花哨的报告/BI):
如果我的最大目标是性能(而不是易维护性、易查询性等),我会猜测在大多数情况下,roll-yourown DAL将是最佳选择。
然而,如果我选择Linq2SQL或NHibernate,我们谈论的性能影响大致是什么? 10%?20%?还是200%?在这两个中,哪个更快?
有没有人有任何真实的数据可以说明这一点?(是的,我知道Stackoverflow在Linq2SQL上运行。)
发布于 2009-11-11 03:29:06
如果你知道你的东西(特别是在SQL和ADO.NET中),那么是的-很有可能,您将能够为您的特定兴趣创建一个经过高度调整、高度优化的自定义DAL,并且总体上比Linq- to -SQL或NHibernate之类的通用对象关系映射更快。
至于有多少--如果不知道具体的表结构、数据和使用模式,就很难说清楚。我记得Rico Mariani做过一些Linq-to-SQL与原始SQL的比较,他的最终结果是Linq-to-SQL的性能达到了高技能SQL程序员的90%以上。
请参阅:http://blogs.msdn.com/ricom/archive/2007/07/05/dlinq-linq-to-sql-performance-part-4.aspx
在我看来,这并不是太糟糕,特别是如果你考虑到你获得的生产力收益--但这始终是最大的权衡:生产力与原始性能。
下面是实体框架和Linq- to -SQL上的另一个blog post与DataReader和DataTable性能的比较。
不幸的是,我没有NHibernate的任何这样的数字。
发布于 2009-11-11 04:41:38
在两个高流量的web应用程序中,重构ORM调用以使用ado.net的存储过程只需要1-2%的CPU和时间变化。
从ORM到自定义DAL是微优化中的一项练习。
https://stackoverflow.com/questions/1710029
复制相似问题