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
-~----------~----~----~----~------~----~------~--~---

Reply via email to