May be it is because of schema validation done by NH 2.1.0? I do not
remember if 1.2.0 did it. But if it is the case, you should cache your
Configuration object.

 

 

From: Jason Dentler [mailto:[email protected]] 
Sent: Monday, November 23, 2009 12:04 PM
To: [email protected]
Subject: Re: [nhusers] Abismal NHibernate 2.1.0 performance

 

Simmo,

 

You haven't given much concrete information to examine, but I suspect you
have a select N+1 problem. As a test, turn off lazy loading. NH Profiler can
probably tell you the exact source of this problem and many others.

 

Thanks,

Jason

On Fri, Nov 20, 2009 at 12:13 PM, simmo <[email protected]>
wrote:

Hi,

I have just upgraded from NHibernate 1.2.0.GA to NHIbernate 2.1.0.GA.
The startup time of my application has gone from ~35 seconds (I know
it's not great :o)) to ~75 seconds - even worse!!! Other than changes
to the way nhibernate is configured (i.e. using properties rather than
key / values) and updating one or two namespaces that have changed
between versions, I haven't changed anything. The code has remained
the same.

When the application starts the server side code reads lists of
entities from numerous tables which are then converted into data
transfer objects to be passed to the front-end via WCF. My initial
hunch was that this was to do with the changes to the way proxies and
lazy loading were handled (between the two versions) meaning that when
I looped through the entities to convert them to data transfer
objects, an additional read was being performed for each entity. I
thought this because when debugging I can see that the
ICriteria.List<T>() method is returning a list of proxy classes. When
I debug the code running with NHibernate 1.2.0 the same method returns
a list of my entities instead.

I still think I am on thinking along the right lines however, I have
ruled out the exact scenario that I outline above. I have recreated
the call to the List method in a simple console app, seen a list of
proxies returned and a select statement output. If I was right above I
would then expect to see further select statements output as I loop
through the returned proxies - this doesn't happen however.

To rule out a problem with a specific proxy implementation I have
tried LinFu and Castle. Neither seems to improve startup time
significantly.

FYI I am using .Net Framework 3.5 and connecting to a SQLServer 2000
database. The application (or the part that is causing me the
headache) is deployed to IIS 6 and exposes the server side
functionality via WCF. The NHibernate upgrade is part of an ongoing
Infrastructure upgrade.

Thanks in advance.

--

You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected]
<mailto:nhusers%[email protected]> .
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=.



 

--

You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=.

--

You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=.


Reply via email to