Cesar, Fijate en que setup (TestInitialize, ClassInitialize o AssemblyInitialize) esta la lógica de inicialización y pasalo lo mas arriba posible.
---------------------------------- Carlos Peix 2014-11-19 22:28 GMT-03:00 César Pistiner <[email protected]>: > Hola Pedro! > > Primero gracias por tu completa respuesta. > > Si, efectivamente usé un profiler para ver la select que esta generando NH > y esa es la que puse en el management studio. Gracias por los links, voy a > leerlos con tiempo. En cuanto saque la lógica de configuración e > inicialización de NH al setup les comento como fueron los resultados. Me > imaginaba que algo de tiempo se lo llevaba eso pero no pensé que era tanto. > > Gracias nuevamente. > > Saludos, > César > > El mié, nov 19, 2014 08:08 PM, Pedro Wood <[email protected]> escribió: > > Hola César >> >> Cuando corrés el query desde el managment studio sólo toma en cuenta el >> tiempo de la consulta en si, en cambio tu test incluye tiempo de conexión a >> la base e inicialización de NH. >> >> En ese test seguro se está llevando la mayor parte del tiempo esto último >> y no la consulta en si. >> >> Como primer paso sacá esto al setup de los tests: >> >> Configuration nhConfiguration = new Configuration(); >> nhConfiguration.Configure("hibernate-performance.cfg.xml"); >> ISessionFactory sessionFactory = nhConfiguration.BuildSessionFactory(); >> >> Para conocer más sobre el tema del manejo de la sesión: >> >> >> http://joseoncode.com/2011/03/03/effective-nhibernate-session-management-for-web-apps/ >> >> Para mejorar la performance de NH hay muchas cosas que se pueden hacer, >> desde la configuración, el manejo de la sesión, en las consultas en sí >> (según cómo las escribís, si usas lazy loading, o eagar fetch), ... >> Un problema muy común como es el SELECT n+1 >> >> Acá tenés info de performance: >> >> http://geekswithblogs.net/Optikal/archive/2013/03/10/152371.aspx >> >> Hay que empezar por diagnosticar bien dónde están los problemas de >> performance y para eso necesitás por lo menos tener un log, o un profiler, >> para ver el SQL que está ejecutando NH. >> >> Saludos, >> >> Pedro >> >> >> >> 2014-11-19 18:34 GMT-03:00 César Pistiner <[email protected]>: >> >> Si!! es el único test que estoy corriendo, en cuanto lo pruebe les >>> comento como fue! >>> >>> Muchas gracias! >>> >>> Saludos, >>> César >>> >>> El mié, nov 19, 2014 06:04 PM, Juan José Montes de Oca Arbós < >>> [email protected]> escribió: >>> >>> Hola Cesar, si este es el único tests ejecutás demora mucho, porque >>>> primero debe inicializar varias cosas. >>>> >>>> En un proyecto en el que trabajo pasaba lo mismo, y la solución fue >>>> agregar un test vacío que se ejecutara primero, con un nombre tipo a00(). >>>> >>>> También, como extra, podés probar de sacar la configuración de NH al >>>> setup de los tests para reducir los tiempos de configuración de NH. >>>> >>>> Espero que te sirva de ayuda... ya nos cuentas como sigue la cosa. >>>> >>>> Saludos Y ÉXITOS!! >>>> >>>> >>>> -- >>>> Juan José Montes de Oca Arbós. >>>> >>>> =========================== >>>> Web personal: http://juanjose.montesdeocaarbos.com.ar/blog/ >>>> >>>> El 19 de noviembre de 2014, 17:32, César Pistiner <[email protected] >>>> > escribió: >>>> >>>>> Hola gente! >>>>> >>>>> Los molesto con un tema que me tiene mal, estoy teniendo algunos >>>>> problemas de performance en nuestra aplicación web. Para atacar el >>>>> problema >>>>> puntual me armé un test que es el siguiente: >>>>> >>>>> [Test, Timeout(5000)] >>>>> [Category("Performance")] >>>>> public void ImportacionDeComprobantes() >>>>> { >>>>> Configuration nhConfiguration = new Configuration(); >>>>> nhConfiguration.Configure("hibernate-performance.cfg.xml"); >>>>> ISessionFactory sessionFactory = nhConfiguration.BuildSessionFactory(); >>>>> using (ISession session = sessionFactory.OpenSession()) >>>>> { >>>>> IResponsable emisor = session.Get<Transportista>(new >>>>> Guid("CCD461E8-1299-4868-856F-9F0A00FDF3F5")); >>>>> >>>>> var criteria = session.CreateCriteria<DetalleResumenDeCuenta>(); >>>>> criteria.Add(Restrictions.Eq("IdExterno", "CC121")); >>>>> >>>>> criteria = criteria.CreateCriteria("Comprobante", "c"); >>>>> criteria.Add(Restrictions.Eq("c.Emisor", emisor)); >>>>> >>>>> Assert.IsTrue(criteria.List().Count > 0); >>>>> } >>>>> } >>>>> >>>>> La ejecución de este test supera los *5 segundos*, pero me llama >>>>> mucho la atención que si pongo la sentencia que genera NH en el SQL >>>>> Management Studio, tarda *nada*, menos de 1 segundo. ¿Puedo tener >>>>> tanta diferencia? ¿Qué puedo revisar para mejorar esto? >>>>> >>>>> Espero haber sido claro, si necesitan algo más de info (mapping, >>>>> índices que tengo creados, etc.) puedo compartirlas sin problema. >>>>> >>>>> Desde ya, muchas gracias! >>>>> >>>>> Saludos, >>>>> César >>>>> >>>> -- >>>>> -- >>>>> Para escribir al Grupo, hágalo a esta dirección: >>>>> [email protected] >>>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano >>>>> --- >>>>> Has recibido este mensaje porque estás suscrito al grupo >>>>> "NHibernate-Hispano" de Grupos de Google. >>>>> Para anular la suscripción a este grupo y dejar de recibir sus >>>>> mensajes, envía un correo electrónico a >>>>> [email protected]. >>>>> Para acceder a más opciones, visita https://groups.google.com/d/optout >>>>> . >>>>> >>>> >>>> -- >>>> -- >>>> Para escribir al Grupo, hágalo a esta dirección: >>>> [email protected] >>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano >>>> --- >>>> Has recibido este mensaje porque estás suscrito al grupo >>>> "NHibernate-Hispano" de Grupos de Google. >>>> Para anular la suscripción a este grupo y dejar de recibir sus >>>> mensajes, envía un correo electrónico a >>>> [email protected]. >>>> Para acceder a más opciones, visita https://groups.google.com/d/optout. >>>> >>> -- >>> -- >>> Para escribir al Grupo, hágalo a esta dirección: >>> [email protected] >>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano >>> --- >>> Has recibido este mensaje porque estás suscrito al grupo >>> "NHibernate-Hispano" de Grupos de Google. >>> Para anular la suscripción a este grupo y dejar de recibir sus mensajes, >>> envía un correo electrónico a >>> [email protected]. >>> Para acceder a más opciones, visita https://groups.google.com/d/optout. >>> >> -- >> -- >> Para escribir al Grupo, hágalo a esta dirección: >> [email protected] >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano >> --- >> Has recibido este mensaje porque estás suscrito al grupo >> "NHibernate-Hispano" de Grupos de Google. >> Para anular la suscripción a este grupo y dejar de recibir sus mensajes, >> envía un correo electrónico a >> [email protected]. >> Para acceder a más opciones, visita https://groups.google.com/d/optout. >> > -- > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] > Para más, visite: http://groups.google.com/group/NHibernate-Hispano > --- > Has recibido este mensaje porque estás suscrito al grupo > "NHibernate-Hispano" de Grupos de Google. > Para anular la suscripción a este grupo y dejar de recibir sus mensajes, > envía un correo electrónico a > [email protected]. > Para acceder a más opciones, visita https://groups.google.com/d/optout. > -- -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano --- Has recibido este mensaje porque estás suscrito al grupo "NHibernate-Hispano" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a [email protected]. Para obtener más opciones, visita https://groups.google.com/d/optout.
