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 > > > > > > > >> > (milliseconds) > > > > > > > > > >> > (I clear caches between the different queries) > > > > > > > > > >> > I then run the query in SQL Management Studio, The > NHibernate has a > > > > > > > >> > duration of 4291 (milliseconds) > > > > > > > >> > I do the same for the Enitity framework which has a > duration of 4291 > > > > > > > >> > (milliseconds) > > > > > > > > > >> > Can anyone explain to me these durations? mostly the > NHibernate time > > > > > > > >> > when running it from application code is HUGE. Eventhough > the SQL is > > > > > > > >> > exactly the same... > > > -- Fabio Maulo --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
