Ow i in no way intend to call my NHibernate from buttons in an actually production application. I want to have a repository handle on those nasty things for me.
As for me never loading this many enitities... I do actually have to load these. With the comments regarding the proxy creation or caching, if i understand correctly proxy's are created for Lazy loading and things. In my first tests (maps not posted here but basically i didnt have an Entiteit object) the query was also as slow. Or does NHibernate create proxy's for entity's it will load in the end eitherway? Basically the way i "see" it. NHibernate should query for me and put all the data inside Debiteur objects which are returns as a IList. Afaik the Entity framework does the exact same yet for some reason which i cannot seem to wrap my head around NHibernate takes 19 seconds to do this... this is the time i'm trying to explain and hopefully reduce since atm it doesn't make sense to me. On 12 aug, 15:01, Fabio Maulo <[email protected]> wrote: > proxy creation and cached proxi. > > 2009/8/12 F.B. ten Kate <[email protected]> > > > > > Okay, fiddled around some more, Now i create a new Session when i hit > > the button. which i close and then dispose when done. > > > Next time i hit the button it creates a new Session again, now i can > > reproduce the slowness. Every singletime i hit the button it takes 19+ > > seconds to execute everything. What would typically be the reason for > > this? Because to me it would make no sense for the Session to be slow > > the first time it executes this query, but then if the same Session > > executes the SAME query things are executed as fast as they should. > > > On 12 aug, 14:47, "F.B. ten Kate" <[email protected]> wrote: > > > I've posted my mappings and configuration already. Same goes for teh > > > code, only thing i didn't post is the Classes which i map too. Ill > > > post those now > > > > using System; > > > using System.Collections.Generic; > > > using System.Linq; > > > using System.Text; > > > > namespace NHibernate2 > > > { > > > public class tEntiteit > > > { > > > private Int32 id; > > > private string name; > > > private IList<Debiteur> debiteurs; > > > > public virtual IList<Debiteur> Debiteurs > > > { > > > set > > > { > > > debiteurs = value; > > > } > > > get > > > { > > > return debiteurs; > > > } > > > } > > > > public virtual Int32 Id > > > { > > > set > > > { > > > id = value; > > > } > > > get > > > { > > > return id; > > > } > > > } > > > public virtual string Name > > > { > > > set > > > { > > > name = value; > > > } > > > get > > > { > > > return name; > > > } > > > } > > > } > > > > } > > > > using System; > > > using System.Collections.Generic; > > > using System.Text; > > > > namespace NHibernate2 > > > { > > > public class Debiteur > > > { > > > private Int32 id; > > > private string name; > > > private string sorteernaam; > > > private DateTime datumwijzigen; > > > private int actiefneeja; > > > private tEntiteit entiteit; > > > > public virtual Int32 Id > > > { > > > set > > > { > > > id = value; > > > } > > > get > > > { > > > return id; > > > } > > > } > > > public virtual tEntiteit Entiteit > > > { > > > set > > > { > > > entiteit = value; > > > } > > > get > > > { > > > return entiteit; > > > } > > > } > > > public virtual Int32 ActiefNeeJa > > > { > > > set > > > { > > > actiefneeja = value; > > > } > > > get > > > { > > > return actiefneeja; > > > } > > > } > > > public virtual string Name > > > { > > > set > > > { > > > name = value; > > > } > > > get > > > { > > > return name; > > > } > > > } > > > public virtual string Sorteernaam > > > { > > > set > > > { > > > sorteernaam = value; > > > } > > > get > > > { > > > return sorteernaam; > > > } > > > } > > > public virtual DateTime DatumWijziging > > > { > > > set > > > { > > > datumwijzigen = value; > > > } > > > get > > > { > > > return datumwijzigen; > > > } > > > } > > > } > > > > } > > > > On 12 aug, 14:43, Carlos cubas <[email protected]> wrote: > > > > > Maybe if you show us your configuration file and mapping files we can > > help more. > > > > > -Carlos > > > > > Practice makes perfect, but if no one is perfect, why practice? > > > > > > Date: Wed, 12 Aug 2009 05:26:29 -0700 > > > > > Subject: [nhusers] Re: NHIbernate performance vs Entity Framework > > > > > From: [email protected] > > > > > To: [email protected] > > > > > > Changed the code a little, i'm now creating one session, and one > > > > > factory on the Load. However i use a button_click to trigger the > > > > > actual querying.. > > > > > > First time i click el button it's slow (both the msgbox timer shows > > 21 > > > > > seconds and profiler tells me 19 seconds) but the second time i hit > > > > > the button (even after clearing th SQL Cache) it runs in less then 5 > > > > > seconds. > > > > > > So it clearly has something to do with the creating of objects or > > > > > something. I'm kind of clueless as to what i'm doing wrong to cause > > > > > the horrible performance i'm having on the first calling > > > > > > On 12 aug, 14:15, "F.B. ten Kate" <[email protected]> wrote: > > > > > > Ow, little extra info, it's 390000 Records i'm querying, which > > > > > > obviously is kinda alot. > > > > > > > On 12 aug, 14:12, "F.B. ten Kate" <[email protected]> wrote: > > > > > > > > Like i said, the "timer" is in SQL Profiler. In otherwords not in > > the > > > > > > > code, but i also have the following bits in there to compare. > > > > > > > > DateTime start = DateTime.Now; > > > > > > > IList<Debiteur> lijst = session.CreateCriteria(typeof > > > > > > > (Debiteur)).List<Debiteur>(); > > > > > > > DateTime stop = DateTime.Now; > > > > > > > dataGridView1.DataSource = lijst; > > > > > > > > MessageBox.Show((stop-start).Seconds +"."+ (stop- > > > > > > > start).Milliseconds); > > > > > > > > Meaning i start the timer AFTER the session has been created, and > > > > > > > start the "query" if i am getting this. the NHibernate project > > atm > > > > > > > takes 26 seconds to do this (this is with another enitity added > > with > > > > > > > Lazyloading, without this entitity it was +- 21 seconds) EF does > > the > > > > > > > same action in +- 5 seconds. Which leads me to believe the > > problem > > > > > > > lies in the execution of the SQL. > > > > > > > > On 12 aug, 14:07, Paco Wensveen <[email protected]> wrote: > > > > > > > > > The sql is not executing slowly, the building of the > > sessionfactory is > > > > > > > > slow. Start your timer after buildsessionfactory and compare > > again. > > > > > > > > > On Wed, Aug 12, 2009 at 2:01 PM, F.B. ten Kate< > > [email protected]> wrote: > > > > > > > > > > Yes i am atm, since it's just a quit check to run a query, > > but would > > > > > > > > > this explain the SQL executing this slowly? > > > > > > > > > > I know i'm not using any "best" practises and things, this is > > the > > > > > > > > > first thing im doing with both NHibernate and EF. > > > > > > > > > > Here is the code running it. > > > > > > > > > > Configuration cfg = new Configuration(); > > > > > > > > > cfg.Configure(); > > > > > > > > > cfg.AddAssembly(typeof(Debiteur).Assembly); > > > > > > > > > > ISessionFactory factory = > > cfg.BuildSessionFactory(); > > > > > > > > > ISession session = factory.OpenSession(); > > > > > > > > > > IList<Debiteur> lijst = > > session.CreateCriteria(typeof > > > > > > > > > (Debiteur)).List<Debiteur>(); > > > > > > > > > > dataGridView1.DataSource = lijst; > > > > > > > > > > On 12 aug, 13:22, Kim Johansson <[email protected]> > > wrote: > > > > > > > > >> Are you creating a new SessionFactory each run? > > (SLOOOOOOOOOOOW!!!) > > > > > > > > > >> You should use a single instance SessionFactory and just > > create new > > > > > > > > >> sessions. > > > > > > > > > >> F.B. ten Kate wrote: > > > > > > > > >> > Hello there, im currently looking at some differences > > between both > > > > > > > > >> > ORM's and to get a good feel for both i try to query from > > one table > > > > > > > > >> > and simply drop all the data in a DataGridView. > > > > > > > > > >> > Easy as pie right? > > > > > > > > > >> > Now here is the different SQL's beeing generated > > > > > > > > > >> > NHibernate: > > > > > > > > > >> > "SELECT this_.Debiteur_ID as Debiteur1_0_0_, > > this_.Debiteurnaam as > > > > > > > > >> > Debiteur2_0_0_, this_.Entiteit_ID as Entiteit3_0_0_, > > this_.Sorteernaam > > > > > > > > >> > as Sorteern4_0_0_, this_.DatumWijziging as > > > > > > > > >> > DatumWij5_0_0_, this_.Actief_NeeJa as Actief6_0_0_ FROM > > tbl_Debiteur > > > > > > > > >> > this_" > > > > > > > > > >> > Enitity Framework: > > > > > > > > > >> > "SELECT > > > > > > > > >> > [Extent1].[Actief_NeeJa] AS [Actief_NeeJa], > > > > > > > > >> > [Extent1].[DatumWijziging] AS [DatumWijziging], > > > > > > > > >> > [Extent1].[Debiteur_ID] AS [Debiteur_ID], > > > > > > > > >> > [Extent1].[Debiteurnaam] AS [Debiteurnaam], > > > > > > > > >> > [Extent1].[Entiteit_ID] AS [Entiteit_ID], > > > > > > > > >> > [Extent1].[Sorteernaam] AS [Sorteernaam] > > > > > > > > >> > FROM [dbo].[tbl_Debiteur] AS [Extent1]" > > > > > > > > > >> > Okay, so sofar EF wins in readability atleast but i dont > > intend to > > > > > > > > >> > actually look at the queries so i'm not worried. > > > > > > > > > >> > I noticed that NHibernate was ALOT slower then EF, the > > reasons seemed > > > > > > > > >> > like a mistery to me so i ran SQL Profiler. > > > > > > > > > >> > When i run the NHibernate project the query runs for a > > duration of > > > > > > > > >> > 19369 (milliseconds) > > > > > > > > > >> > Then i run Enitity frame work which runs for a duration of > > 3621 > > ... > > meer lezen » --~--~---------~--~----~------------~-------~--~----~ 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=en -~----------~----~----~----~------~----~------~--~---
