Bueno gente,

Les comento que con los cambios sugeridos el test ya no supera los malditos
5 segundos :)

Les dejo lo que hice por si le sirve a otro, pasé la inicialización de NH
al FixtureSetUp.

[TestFixtureSetUp]
public void Init()
{
Configuration nhConfiguration = new Configuration();
nhConfiguration.Configure("hibernate-performance.cfg.xml");
_sessionFactory = nhConfiguration.BuildSessionFactory();
}

Gracias a todos por la ayuda, ahora me voy a concetrar en mi problema
original de performance!

Saludos,
César

El 20 de noviembre de 2014, 6:59, César Pistiner <[email protected]>
escribió:

> Buen día Carlos!
>
> Si!! Ni bien llego voy a probar eso y les cuento.
>
> Muchas gracias!
>
> Abrazo,
> César
>
> El jue, nov 20, 2014 06:48 AM, Carlos Peix <[email protected]>
> escribió:
>
> 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: NHibernate-Hispano@
>>>>>>> googlegroups.com
>>>>>>> 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 nhibernate-hispano+
>>>>>>> [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: NHibernate-Hispano@
>>>>>> googlegroups.com
>>>>>> 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 nhibernate-hispano+
>>>>>> [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: NHibernate-Hispano@
>>>>> googlegroups.com
>>>>> 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 nhibernate-hispano+
>>>>> [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: NHibernate-Hispano@
>>>> googlegroups.com
>>>> 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 nhibernate-hispano+
>>>> [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: NHibernate-Hispano@
>>> googlegroups.com
>>> 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 nhibernate-hispano+
>>> [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: NHibernate-Hispano@
>> googlegroups.com
>> 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 nhibernate-hispano+
>> [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.

Responder a