Вопросы о производительности по Entity Framework 4.0 - PullRequest
1 голос
/ 26 февраля 2011

Мы собираемся использовать версию EF 4.0, я сделал кое-что. Протестировав и сравнив EF 3.5 с версией, я нашел кое-что интересное.

Методика испытаний: Я разработал простой веб-сайт ASP.NET, который имеет кнопку и элемент управления Gridview, нажимая кнопку «Я заполняю сетку». Я скопировал код заполнения сетки данных:

private void BindData()
{
    using (NorthwindEntities context = new NorthwindEntities())
    {
        DataGrid.DataSource = context.Categories;
        DataGrid.DataBind();
    }
}

Я запустил Load-test на этой веб-странице, тестовый шаблон такой: Начальный счетчик пользователей = 30, Увеличивать счетчик пользователей на 10 каждые 10 секунд, Максимальный счетчик пользователей = 250, [я запускал этот тест в течение 5 минут]. Я провел этот тест для веб-сайта, который использует версию EF 3.5, а также для веб-сайта, который использует EF 4.0, наблюдения интересны ...

  1. Общее количество запросов (веб-запросов, отправленных тестовым агентом), обработанных в течение 5 минут, всегда больше в версии EF 3.5 (хотя дельта очень меньше).

  2. Уровень конкуренции CLR очень высок на веб-сайте версии EF 4.0 (сравните с веб-сайтом версии 3.5 EF), просто интересно узнать, включена ли дополнительная блокировка в EF 4.0.

Также было бы неплохо знать:

  1. Есть ли какое-либо улучшение производительности в версии EF 4.0?

  2. Мне было интересно, есть ли какие-либо указания от команды EF о том, как использовать EF с контекстом веб-приложения (особенно о том, как использовать ObjectContext, обмениваться ли одиночным ObjectContext среди веб-сессий или позволить каждому сеансу иметь свой владеть ObjectContext, или позволить каждому запросу создавать и уничтожать ObjectContext (как я делал в моем тесте перф.).

1 Ответ

2 голосов
/ 26 февраля 2011

Да, в EF4 сделаны улучшения производительности.Вы, вероятно, не увидите их в простом запросе, который вы выполнили:

 SELECT * FROM dbo.Categories

Но как только вы начнете использовать EF в реальных сценариях, вы найдете EF4 лучше и быстрее.Даже если EF4 немного медленнее в некоторых сценариях, вы все равно захотите использовать EF4 из-за очень сложного набора функций, поддержки POCO и т. Д.

Время жизни ObjectContext должно быть коротким.В веб-приложении лучше всего использовать один экземпляр ObjectContext на запрос.

EFv1 не работает.Если вы не используете .NET 3.5, не используйте EFv1.

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