|
|
|
MVC+EF vs MVC+ADO.NET. Производительность
|
|||
|---|---|---|---|
|
#18+
дано mvc-приложение, mssql server 2008 (сервер в инете, не в локалке) для теста выключаем пулинг 1) mvc+ef: а) создаем экземпляр репозитория в модели б) репозиторий создает контекст в) дергаем первые 100 записей из сферической таблицы в вакууме: ~ 900-1500 мс 2) mvc+adonet: а) создаем экземпляр репозитория в модели б) дергаем первые 100 записей из сферической таблицы в вакууме: ~ 400-1100 мс (SqlCommand + SqlDataReader) Такая скорость EF'a связана с тем, что каждый раз при создании модели, создается и контекст, а значит происходит конфигурация всех DbSet'ов, настройка отношений и т.п. Итого имеем: n пользователей, n моделей, n контекстов. Можно ли избавиться от создания контекста при каждом запросе странички? Кэширование я так понимаю не подойдет, так как в этом случае context превратится фактически в синглтон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 21:17 |
|
||
|
MVC+EF vs MVC+ADO.NET. Производительность
|
|||
|---|---|---|---|
|
#18+
Глупые Снежинки, Или смирись с тем, что EF тормознутее ридеров или сделай все на ридерах. Ну или в поиск - тут много граблей и велосипедов закопано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 22:01 |
|
||
|
MVC+EF vs MVC+ADO.NET. Производительность
|
|||
|---|---|---|---|
|
#18+
пардон, переработал, конечно же не в модели, а в контроллере. опечатка в 1м посте вот код для лучшего понимания вопроса Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. если MyRepository юзает EF каждый раз при запросе странички создается контекст и выполняется код FluentAPI OnModelCreating, что есесно не быстро. С классическим АДОНЕТ такого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 22:17 |
|
||
|
MVC+EF vs MVC+ADO.NET. Производительность
|
|||
|---|---|---|---|
|
#18+
Глупые Снежинки, авторТакая скорость EF'a связана с тем, что каждый раз при создании модели, создается и контекст, а значит происходит конфигурация всех DbSet'ов, настройка отношений и т.п. Долго он создается только 1й раз на домен приложения, из-за msndПрежде чем платформа Entity Framework сможет выполнять запросы к концептуальной модели или сохранять изменения в источнике данных, ей необходимо создать набор локальных представлений запросов для доступа к базе данных. Посмотрите: Вопросы производительности (платформа Entity Framework) P.S. У меня гораздо больше строк выгружается за 200-400 мс, с передачей на клиента (wcf-сервис). 1 Контекст на 1 запрос к сервису. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 22:22 |
|
||
|
MVC+EF vs MVC+ADO.NET. Производительность
|
|||
|---|---|---|---|
|
#18+
Глупые Снежинкипардон, переработал, конечно же не в модели, а в контроллере. опечатка в 1м посте вот код для лучшего понимания вопроса Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. если MyRepository юзает EF каждый раз при запросе странички создается контекст и выполняется код FluentAPI OnModelCreating, что есесно не быстро. С классическим АДОНЕТ такого нет. Вы, кстати, не правы, OnModelCreating вызывается 1 раз и не привязан к созданиям экземпляров DbContext (выполняется в момент 1 запроса, видимо при создании ObjectContext) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2012, 22:52 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=124&tid=1359382]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 366ms |

| 0 / 0 |
