2009-10-26 6 views
3

Короче говоря, что работает быстрее:Есть ли данные о производительности запуска NHibernate и Fluent NHibernate?

  • SessionFactory Прекомпиляция XML конфигурации или
  • Fluent NHibernate обеспечение конфигурации программно?
+0

Почему вы заботитесь о различии? Это должно быть небольшая часть секунды, или занимает больше времени в вашем случае? – Paco

+0

Просто не знал, как работает Fluent NHibernate, подумал, что он может быть более эффективным, чем настройка XML-конфигурации. – alex

ответ

3

Fluent NHIbernate создает документы XML и Sessionfactory под капотом, поэтому он медленнее, чем не используется Fluent NHibernate.

Почему вы спрашиваете?

+0

Я не знал, что Fluent NHibernate создает XML-документ, хотя я могу использовать некоторый внутренний API для генерации prcompiled mapping. – alex

8

Мой личный опыт заключался в том, что создание объекта конфигурации (что неизбежно * независимо от того, используется ли Fluent) обычно затмевает время, необходимое для установки объекта FluentConfiguration, причем коэффициент увеличивается с увеличением числа сопоставлений.

На 2.5 gz c2d, с моим проектом с примерно 15 сопоставлениями, для FluentConfiguration потребовалось 360 мс и 5215 мс для конфигурации.

В тестовом проекте с 1000 сопоставлениями (простые классы с 2-3 строковыми свойствами) для конфигурации FluentConfiguration потребовалось 470 мс и 40336 (40 секунд!) Для конфигурации.

* На самом деле, не совсем. большая часть стоимости Конфигурации исходит из проверки сопоставлений XML. Айенде обсудил его с here (а также быстрым ускорением, полученным при объединении отображений в один файл), и возможной альтернативой созданию конфигурации при запуске приложения является сериализация его, как обсуждалось here. В проекте тестирования 1000-изображений это сократило время, необходимое для получения объекта конфигурации примерно до 30 мс (хотя оно также увеличило время, необходимое для создания SessionFactory с ~ 3 до ~ 4 секунд - я не уверен, почему).

Смежные вопросы