我已经在互联网上搜索了所有关于 LLBLGen Pro 的性能信息。没有找到。只是想知道与 Nhibernate 相比 LLBLGen Pro 的性能如何。谢谢
2 回答
如果没有上下文,您的问题基本上是不可能回答的。我要回答的问题将从以下开始:
- 什么样的应用程序?以数据为中心?以业务逻辑为中心?
- 我们在谈论多少数据?
- 我们在谈论什么样的数据操作?主要看书?主要是写?
一般来说,LLBLGen 的表现非常好。我们已经在我工作的 10 多个项目(包括一些企业级项目)中使用了它,我们看到的少数性能问题始终是误解代码在做什么的结果(有一个学习曲线)或实施不佳的物理模型(例如缺少索引)。
这两个框架处理数据访问问题的方式非常不同。如果您有强大的数据背景,LLBLGen 的操作通常会转换为相当容易理解的 SQL。NHibernate 尽可能使用会话和缓存将数据保存在内存中以提高性能(免责声明:我不是 NHibernate 专家)。LLBLGen 不支持这种概念;相反,它在断开连接状态下工作,并将更改跟踪信息直接存储在其实体对象上。
归根结底,框架采用的方法非常不同,如果不了解您的系统的功能,很难预测哪种方法会更好。在正确的情况下,任一框架都可用于设计数据访问性能不是主要性能瓶颈的系统。
最初我们测试了 LLBLGen @ ORMBattle.NET,它的物化速度比 NH 快 2 倍;LINQ 查询编译时间相当不错(约 4000 次查询/秒),但 CUD 操作明显慢于 NH(LLBLGen 中没有 CUD 批处理)。
当您在同一会话中处理大量对象时,这两个框架必须相对较慢:
- NH 由于其物化管道而相对较慢。我不完全确定为什么,但是例如为了实现脏检查,NH 必须在某处存储任何物化对象的克隆。至少两倍的 RAM ~= 至少慢 2 倍。
- LLBLGen 使用相对“胖”的实体——它们似乎将字段存储在字典中。显然,从性能的角度来看,这并不好,因为 RAM 消耗是影响它的重要因素之一。
所以简而言之,LLBLGen Pro 的读取速度必须比 NH 快,但写入速度要慢。