开发者

NHibernate Configuration.AddDocument is slow

开发者 https://www.devze.com 2022-12-09 21:12 出处:网络
i\'m testing fluent-nhibernate in a small project. I have near 10 classes and when I call BuildSessionFactory method I get a slow response of about 4500ms (too much for a project that runs in about 40

i'm testing fluent-nhibernate in a small project. I have near 10 classes and when I call BuildSessionFactory method I get a slow response of about 4500ms (too much for a project that runs in about 40ms)

I have identified that the longest method call is Configuration.AddDocument(xxx) in the NHibernate assembly.

I don't set use_reflection_optimizer so I suppose the problem is in my 开发者_运维知识库configuration (I hope).


This is what I get..

2009-11-02 17:32:04,171 [7] INFO NHibernate.Cfg.Environment - NHibernate 2.1.1.4000 (2.1.1.4000)

2009-11-02 17:32:04,456 [7] INFO NHibernate.Cfg.Environment - Bytecode provider name : lcg

2009-11-02 17:32:05,234 [7] INFO NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect

2009-11-02 17:32:07,240 [7] INFO NHibernate.Cfg.XmlHbmBinding.Binder - Mapping class: ImpelSystems.Model.GestioneInterruzioni.FuoriServizio -> FuoriServizio

2009-11-02 17:32:07,304 [7] INFO NHibernate.Dialect.Dialect - Using dialect: NHibernate.Dialect.MsSql2008Dialect

2009-11-02 17:32:07,306 [7] INFO NHibernate.Cfg.XmlHbmBinding.Binder - Mapping class: ImpelSystems.Model.GestioneInterruzioni.RegistroUtenti -> RegistroUtenti

So it's ok to have about a second for startup... but then the first class is mapped in 2 seconds. I'm only trying to search why....


Building the session factory might be optimized by 1 or 2 seconds, but cannot use NHibernate for an application that must startup a fraction of a second. Most applications using NHibernate run as webapplication or as a service. For this kind of applications a few seconds more or less do not matter, but for you application, I'm afraid that hand build sql is the only thing that will be fast enough.


NHibernate does much of its mapping work during the creation of the SessionFactory. By doing mapping and query translation during startup, the costs are not paid each time a Session is created. This is why the recommendation when using NHibernate is to create the SessionFactory only once per application lifetime.

As @Paco mentioned, if you need very fast startup NHibernate may not be the best choice for this application.

0

精彩评论

暂无评论...
验证码 换一张
取 消