Ceci est fait en utilisant Fluent NHibernateNHibernate prend beaucoup de temps pour exécuter la requête
J'ai une recherche NHibernate qui est en train de récupérer des données d'une table. Si je prends le sql généré et l'exécute à travers l'analyseur de requête, cela prend ~ 18ms pour fonctionner. En utilisant NHProfiler, j'obtiens la durée de cette requête comme ~ 1800ms - 100 fois plus long que sql!
Query duration
- Database only:1800ms
- Total: 1806ms
L'objet qui est peuplé contient une classe enfant, mais cet enfant est chargé à partir du cache de niveau 2 NHibernate
Les données qui est retourné est paginée (50 par requête), bien que dans la mesure comme je peux le dire, cela ne devrait pas faire de différence
J'ai aussi un compte en cours d'exécution, et encore une fois, cela prend ~ 4ms dans l'analyseur de requête et ~ 1800ms selon NHProfiler.
NH Profiler affiche la requête temps d'exécution, ou le temps complet pour récupérer, la carte des classes et construire le graphe d'objet? Et si c'est le premier - pourquoi cela prend-il tellement plus de temps que d'exécuter la requête directement?
EDIT: Juste trouvé ce post par Ayende sur la valeur Durée requête donnée dans NH Profiler: http://ayende.com/Blog/archive/2009/06/28/nh-prof-query-duration.aspx - il est donc certainement la requête de la base de données qui prend beaucoup de temps
Combien de temps cela prend-il avec ADO.NET? –
Quel est le principal goulot d'étranglement lorsque vous profilez le code avec un profileur comme les fourmis ou les dottraces? – Paco
L'utilisation d'ADO.NET prend une fraction du temps que fait NHibernate. Je n'ai pas de logiciel de profilage installé pour le moment, donc je vais juste obtenir ce tri et voir ce qu'il dit –