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" <folk...@bluenode.nl> 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 <veno...@hotmail.com> 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: folk...@bluenode.nl
> > > To: nhusers@googlegroups.com
>
> > > 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" <folk...@bluenode.nl> 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" <folk...@bluenode.nl> 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 <pac...@gmail.com> 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<folk...@bluenode.nl> 
> > > > > > 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 <hagbarddenst...@gmail.com> 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...
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to nhusers@googlegroups.com
To unsubscribe from this group, send email to 
nhusers+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to