LINQ2SQL性能与自定义DAL与NHibernate的对比

时间:2009-11-10 18:13:36

标签: performance data-access-layer

给出一个简单的用户驱动的高流量Web应用程序(没有花哨的报告/ BI):

如果我的最高目标是性能(不易于维护,易于查询等),我猜想在大多数情况下,自动滚动DAL将是最佳选择。

但是,如果我选择Linq2SQL或NHibernate,我们大概会谈到什么样的性能? 10%? 20%? 200%?在这两个中哪个会更快?

有没有人有任何现实世界的数字可以说明这一点? (是的,我知道Stackoverflow在Linq2SQL上运行..)

2 个答案:

答案 0 :(得分:3)

如果您了解自己的东西(特别是在SQL和ADO.NET中),那么是 - 最有可能的是,您将能够为您的特定兴趣创建一个高度调整,高度优化的自定义DAL,并且总体上比通用ORM,如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

在我的书中并不是太破旧,特别是如果你考虑到你所获得的生产力增益 - 但这是最​​大的权衡:生产力与原始绩效。

与DataReader和DataTable性能相比,这是实体框架和Linq-to-SQL的另一个blog post

遗憾的是,NHibernate没有这样的数字。

答案 1 :(得分:3)

在两个高流量的网络应用程序中,重构ORM调用以使用来自ado.net的存储过程只能让我们在CPU和时间上有1-2%的变化。

从ORM转到自定义DAL是微优化的练习。