Конфигурация NHibernate.AddDocument медленный - PullRequest
1 голос
/ 02 ноября 2009

Я тестирую свободное владение в небольшом проекте. У меня около 10 классов, и когда я вызываю метод BuildSessionFactory, я получаю медленный ответ около 4500 мс (слишком много для проекта, который выполняется за 40 мс)

Я определил, что самый длинный вызов метода - Configuration.AddDocument (xxx) в сборке NHibernate.

Я не установил use_reflection_optimizer, поэтому я полагаю, что проблема в моей конфигурации (я надеюсь).


Это то, что я получаю ..

2009-11-02 17: 32: 04,171 [7] INFO NHibernate.Cfg.Environment - NHibernate 2.1.1.4000 (2.1.1.4000)

2009-11-02 17: 32: 04,456 [7] ИНФО NHibernate.Cfg.Environment - Имя поставщика байт-кода: lcg

2009-11-02 17: 32: 05,234 [7] INFO NHibernate.Dialect.Dialect - Использование диалект: NHibernate.Dialect.MsSql2008Dialect

2009-11-02 17: 32: 07,240 [7] ИНФО NHibernate.Cfg.XmlHbmBinding.Binder - Картографический класс -> FuoriServizio

2009-11-02 17: 32: 07,304 [7] ИНФО NHibernate.Dialect.Dialect - Использование диалект: NHibernate.Dialect.MsSql2008Dialect

2009-11-02 17: 32: 07,306 [7] INFO NHibernate.Cfg.XmlHbmBinding.Binder - Картографический класс: ImpelSystems.Model.GestioneInterruzioni.RegistroUtenti -> RegistroUtenti

Так что нормально иметь около секунды для запуска ... но затем первый класс отображается через 2 секунды. Я только пытаюсь найти почему ....

Ответы [ 2 ]

1 голос
/ 04 ноября 2009

NHibernate делает большую часть своей картографической работы во время создания SessionFactory. При выполнении сопоставления и перевода запросов во время запуска затраты не оплачиваются при каждом создании Session. Вот почему при использовании NHibernate рекомендуется создавать SessionFactory только один раз за время жизни приложения.

Как уже упоминалось @Paco, если вам нужен очень быстрый запуск, NHibernate может быть не лучшим выбором для этого приложения.

1 голос
/ 02 ноября 2009

Создание фабрики сеансов может быть оптимизировано на 1 или 2 секунды, но не может использовать NHibernate для приложения, которое должно запускаться за доли секунды. Большинство приложений, использующих NHibernate, запускаются как веб-приложение или как служба. Для такого рода приложений несколько секунд более или менее не имеют значения, но для вашего приложения я боюсь, что ручная сборка sql - единственное, что будет достаточно быстрым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...