【问题标题】:LINQ2SQL performance vs. custom DAL vs. NHibernateLINQ2SQL 性能与自定义 DAL 与 NHibernate
【发布时间】:2023-04-06 02:22:02
【问题描述】:

假设一个简单的用户驱动、高流量的网络应用程序(没有花哨的报告/BI):

如果我的最大目标是性能(不是易于维护、易于查询等),我推测在大多数情况下,您自己的 DAL 将是最佳选择。

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

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

【问题讨论】:

    标签: performance data-access-layer


    【解决方案1】:

    如果您了解自己的知识(尤其是 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

    在我的书中并不算太简陋,特别是如果您将获得的生产力收益考虑在内 - 但这始终是一个重大的权衡:生产力与原始性能。

    这里是另一个blog post,与 DataReader 和 DataTable 性能相比,Entity Framework 和 Linq-to-SQL。

    很遗憾,我没有 NHibernate 的任何此类数字。

    【讨论】:

    • 此外,您还可以自定义 Linq to SQL 的行为,从而专门优化某些元素(如果需要/可能)。
    【解决方案2】:

    在两个高流量 Web 应用程序中,重构一个 ORM 调用以使用来自 ado.net 的存储过程,仅使我们在 CPU 和时间上发生了大约 1-2% 的变化。

    从 ORM 到自定义 DAL 是一种微优化练习。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多