【问题标题】:How does LLBLGen Pro Stack up Against Nhibernate Performance WiseLLBLGen Pro 如何与 Nhibernate 性能相提并论
【发布时间】:2009-12-04 04:48:14
【问题描述】:

我已经在互联网上搜索了所有关于 LLBLGen Pro 的性能信息。没有找到。只是想知道与 Nhibernate 相比 LLBLGen Pro 的性能如何。谢谢

【问题讨论】:

    标签: performance nhibernate llblgenpro


    【解决方案1】:

    如果没有上下文,您的问题基本上是不可能回答的。我要回答的问题将从以下开始:

    • 什么样的应用程序?以数据为中心?以业务逻辑为中心?
    • 我们在谈论多少数据?
    • 我们在谈论什么样的数据操作?主要看书?主要写作?

    一般来说,LLBLGen 的表现非常好。我们已经在我工作的 10 多个项目(包括一些企业级项目)中使用了它,我们看到的少数性能问题始终是误解代码在做什么的结果(有一个学习曲线)或实施不佳的物理模型(例如缺少索引)。

    这两个框架处理数据访问问题的方式非常不同。如果您有强大的数据背景,LLBLGen 的操作通常会转换为相当容易理解的 SQL。 NHibernate 尽可能使用会话和缓存将数据保存在内存中以提高性能(免责声明:我不是 NHibernate 专家)。 LLBLGen 不支持这种概念;相反,它在断开连接状态下工作,并将更改跟踪信息直接存储在其实体对象上。

    归根结底,框架采用的方法非常不同,如果不进一步了解您的系统的功能,很难预测哪种方法的性能更好。在正确的情况下,任一框架都可用于设计数据访问性能不是主要性能瓶颈的系统。

    【讨论】:

    • Hmmmm..我已经阅读了您消息中的链接,并且必须说 Nhibernate 确实受到了攻击。你知道任何关于使用 .NET 的 nhibernate 的好书吗?
    • 我不知道有什么好的 NHibernate 书籍——我敢打赌,我在其他评论中链接的博客是一个好的起点(不是具体的帖子,而是博客本身)。我相信实体框架是未来,假设 MS 致力于继续开发它(我认为他们是)。但是,我认为它在当前版本中几乎没有 LLBLGen 或 NH 强大。
    • LLB 支持内存过滤,因此将所有甚至只是大量使用的数据部分移动到内存缓存中不会太复杂。结合其 Dependency Injection 框架的功能来检测全局变化,您会顺利进行。
    【解决方案2】:

    最初我们测试了 LLBLGen @ ORMBattle.NET,它在物化方面比 NH 快 2 倍; LINQ 查询编译时间相当不错(约 4000 次查询/秒),但 CUD 操作明显慢于 NH(LLBLGen 中没有 CUD 批处理)。

    当您在同一个会话中处理大量对象时,两个框架必须相对较慢:

    • NH 由于其物化管道而相对较慢。我不完全确定为什么,但是例如为了实现脏检查,NH 必须在某处存储任何物化对象的克隆。 RAM 至少增加两倍 ~= 至少慢 2 倍。
    • LLBLGen 使用相对“胖”的实体 - 似乎它们将字段存储在字典中。显然,从性能的角度来看,这并不好,因为 RAM 消耗是影响它的重要因素之一。

    请参阅this FAQ questionTest Suite Summary 以获得更深入的解释。

    所以简而言之,LLBLGen Pro 的读取速度必须比 NH 快,但写入速度要慢。

    【讨论】:

    • ORMBattle.Net 是一个极具争议的网站,由与 LLBLGen Pro 和 NHibernate 竞争的 ORM 工具的制造商创建。在 MINIMUM,请在大量存入此答案之前考虑来源。以下是 NH 的主要贡献者之一的博客文章,其中包括 LLBLGen 的首席开发人员 Frans Bouma 的一些 cmets:ayende.com/Blog/archive/2009/08/15/…
    • 针对“有争议的网站”(这是真的-围绕它有很多争论),我还建议研究博客@ORMBattle.NET 以研究作者的观点。
    猜你喜欢
    • 2010-11-09
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多