|
|
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
Добрый день! Согласно профайлеру FluentConfiguration.BuildConfiguration выполняется 24 секунды. Код, конфигурирующий mapping и connection к БД: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Такая длительность построение конфигураций - это нормально??? Возможно ли, что построение конфигурации происходит так долго из-за того, что я где-нибудь криво задал маппинг? На что стоит обратить внимание, для увеличение произовдительности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2010, 13:39 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
Что-то мне подсказывает, что тормозит не только FluentNhibernate, а еще сам NHibernate в процессе создания SessionFactory. Разбор хмl и последующая генерация проксей - дорогое удовольствие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2010, 14:20 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
SolYUtor, Последующие тормоза тоже наблюдаются, но в данный момент меня больше волнует FluentConfiguration.BuildConfiguration. И главный вопрос: такое время - это мой косяк, или типичное поведение данного инструмента? Насколько я понимаю NHibernate (и Fluent NHibernate) пользуются очень многие во всевозможных проектах, видимо есть какой-то магический способ заставить это работать с приемлемой скоростью. Вот я и пытаюсь понять как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2010, 14:35 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
Почитал исходники Fluent'а. Как и предполагалось, он сначала долго и мучительно генерирует xml, чтобы потом их прочитал NHibernate. А это всё не быстрые операции с текстом + рефлексия. Это Меееедленно, из принципа. В общем, пишите xml вместо флюент-маппингов, и будет вам быстрее. Или смиритесь со своим временем. Волшебной кнопки "Сделать всё быстро" нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2010, 16:54 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
SolYUtor, Как-то все печально получается. Насколько я понимаю FluentNHibernate вначале генерирует все xml-ники, а NHibernate строит маппинги тоже все разом. Нельзя ли как-нибудь этим товарищам сказать, что нужно не все сразу, а по мере необходимости? Глядишь и быстрее будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2010, 17:24 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
stuffhappens Нельзя ли как-нибудь этим товарищам сказать, что нужно не все сразу, а по мере необходимости? Можно. Тут разработчики NHibernate, тут разработчики FluentNhibernate. Напишите им свои соображения по этому поводу. stuffhappensГлядишь и быстрее будет... Сомневаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2010, 18:05 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
SolYUtor, Огромное спасибо. Буду разбираться. А Вы сами пользуетесь ORM? Какой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2010, 11:40 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
stuffhappens, NHibernate пользую, и пока весьма им доволен. Правда, маппинги пишу вручную xml'ем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2010, 12:49 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
SolYUtorПравда, маппинги пишу вручную xml'ем. +1 надёжнее и красивее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2010, 12:53 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
SolYUtor, А как относитесь ко всяким LINQ-провайдорам? Или Cirteria/HQL надежнее и красивее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2010, 14:00 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
stuffhappensА как относитесь ко всяким LINQ-провайдорам? Сырые и маломощные. В топку. stuffhappensИли Cirteria/HQL надежнее и красивее? Истину глаголите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2010, 14:28 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
stuffhappens, Если имеется ввиду LINQ to NHibernate - то ничего против имею. Даже некоторые плюсы будут, вроде Intellisense от студии. Но сам не использую, поэтому о степени сырости ничего сказать не могу. В общем, попробуйте - потом сами для себя решите. ICreateria не люблю - сложно воспринимать. На мой вкус HQL наиболее читабелен. PS. FluentNHibernate использую для сохраняемости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2010, 16:41 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
Пользуясь случаем, задам вопрос по NHibernate. Есть 2 таблички: tSources(ID, Name) и tComments(ID, SourceID, Comment, Date) (Связь один-ко-многим). Требуется по каждому источнику вевести его название и последний (по дате) к нему комменарий. Классы, описывающие сущности: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Классы, задающие маппинг на FluentNH: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Ну и для получения нужного результата я получаю все источники и для каждого из них вызываю LastComment. В итого время работы нереально велико. Если посмотреть на SQL-запросы, генерируемые NHibernate, то видно, что для каждого ID источника выполняется запрос типа Код: plaintext 1. 2. Код: plaintext 1. 2. Может быть его можно заставить это сделать? Как? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2010, 14:22 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
1. В маппинге Source схему для таблицы указывайте методом Schema, а не Table 2. Классы у вас слишком много позволяют делать со своим состоянием извне. Жестчё инкапсулировать надо. 3. В NHibernate именно вы управляете стратегией извлечения данных. По умолчанию всё грузиться в ленивом режиме, поэтому и получаются такие запросы. Заставить грузить через Left join просто: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 4. Имхо, если нужен только последний комментарий, то грузить все остальные - это как-то не жирно. Они все будут складываться в кеш первого уровня, отслеживать состояние и т.д. Я бы сделал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 5. Рекомендую осилить NHibernate in Action. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2010, 16:12 |
|
||
|
Жутко тормозит Fluent NHibernate
|
|||
|---|---|---|---|
|
#18+
SolYUtor, Спсибо за ответ! Изучал NHibernate по вот этим скринкастам , но качеством материала остался недоволен. Видимо, действительно нужно читать NHibernate in action. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2010, 11:18 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=51&tid=1351011]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 394ms |

| 0 / 0 |
