是否有关于NHibernate与Fluent NHibernate启动性能的数据?

是否有关于NHibernate与Fluent NHibernate启动性能的数据?,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,简而言之,什么工作更快: SessionFactory预编译XML 配置,或 流利的纤维酸盐 以编程方式配置 Fluent NHIbernate在后台创建XML文档和Sessionfactory,因此比不使用Fluent NHIbernate要慢 你为什么这么问?我个人的经验是,构建配置对象(无论是否使用Fluent,这是不可避免的*)通常会使设置FluentConfiguration对象所需的时间相形见绌,随着映射数量的增加,该系数会增加 在2.5 Ghz c2d上,我的项目有大约15个映射

简而言之,什么工作更快:

  • SessionFactory预编译XML 配置,或
  • 流利的纤维酸盐 以编程方式配置

Fluent NHIbernate在后台创建XML文档和Sessionfactory,因此比不使用Fluent NHIbernate要慢


你为什么这么问?

我个人的经验是,构建配置对象(无论是否使用Fluent,这是不可避免的*)通常会使设置FluentConfiguration对象所需的时间相形见绌,随着映射数量的增加,该系数会增加

在2.5 Ghz c2d上,我的项目有大约15个映射,FluentConfiguration需要360ms,Configuration需要5215ms

在一个有1000个映射(具有2-3个字符串属性的简单类)的测试项目上,FluentConfiguration需要470ms,而配置需要40336(40秒!)


*事实上,不是真的。配置的大部分成本来自验证XML映射。Ayende已经讨论了它(以及通过将映射合并到单个文件而获得的快速加速),并且在应用程序启动时构建配置的一个可能的替代方法是按所讨论的那样序列化它。在1000映射测试项目中,这将获取配置对象所需的时间减少到了30毫秒左右(尽管它也将构建SessionFactory所需的时间从3秒增加到了4秒——我不确定原因)。

我不知道Fluent NHibernate创建XML文档,我想它可能会使用一些内部API来生成编译后的映射。为什么您会关心这些差异呢?这应该是一小部分秒,或者在您的情况下需要更长的时间?只是不知道Fluent NHibernate的工作原理,认为它可能比打包XML配置更有效。