LLBLGen Pro如何与Nhibernate Performance Wise相抗衡

时间:2009-12-04 04:48:15

标签: performance nhibernate llblgenpro

我在网上搜索高低,寻找LLBLGen Pro的任何性能信息。找不到。只是想知道LLBLGen Pro与Nhibernate相比如何表现。感谢

2 个答案:

答案 0 :(得分:6)

如果没有上下文,您的问题基本上无法回答。我要求回答的问题将从以下开始:

  • 什么样的申请?以数据为中心?以业务逻辑为中心?
  • 我们谈论了多少数据?
  • 我们在谈论什么样的数据操作?大多数读?大多是写作?

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

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

最重要的是,框架采用的方法是非常不同的,如果不了解系统的功能,很难预测哪些方法会表现得更好。在右手中,任一框架都可用于设计一个系统,其中数据访问性能不是主要的性能瓶颈。

答案 1 :(得分:4)

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

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

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

有关更深入的解释,请参阅this FAQ questionTest Suite Summary

简而言之,LLBLGen Pro在读取时必须比NH快,但在写入时要慢。