powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Производительность EF
25 сообщений из 46, страница 1 из 2
Производительность EF
    #39497454
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существуют-ли какие-то данные о производительности EF в сравнении с хранимками? Я могу сделать свои собственные тесты, но возможно это уже кем-то сделано. На данный момент проект который мы делаем с его помощью не отличается заметной производительностью, и по-видимому часть ответственности за это лежит на EF.
Причем я не имею ввиду какие-то моменты где EF используется неправильно или неоптимально, интересует именно то, насколько EF медленнее в обычных запросах написанный "правильно" с точки зрения EF. Под обычными имеются ввиду запросы с несколькими джойнами, апдейты и инсерты в несколько таблиц.
Дополнительный вопрос про память отьедаемый им на сервере, при загрузке контекста от сжирает гиг памяти сервера, это нормально?
...
Рейтинг: 0 / 0
Производительность EF
    #39497472
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford,

stenfordСуществуют-ли какие-то данные о производительности EF в сравнении с хранимками?

Кратко: хранимки быстрее.

Неизвестно, какие конкретно запросы вы собираетесь сравнивать. EF бы на свет не появился и дожил до наших дней, если бы овчинка не стоила бы выделенки.

stenfordНа данный момент проект который мы делаем с его помощью не отличается заметной производительностью, и по-видимому часть ответственности за это лежит на EF.

Скорее всего ответственность лежит на неправильном употреблении EF. Это самая распространённая проблема. EF конечно накладывает определённый оверхед и по памяти и по скорости, но обычно этим можно пренебречь.

stenfordПричем я не имею ввиду какие-то моменты где EF используется неправильно или неоптимально, интересует именно то, насколько EF медленнее в обычных запросах написанный "правильно" с точки зрения EF. Под обычными имеются ввиду запросы с несколькими джойнами, апдейты и инсерты в несколько таблиц.

Если делаете запросы на получение данных, пишите проекции. Основная проблема тех, кто осваивает EF — они не пишут проекции. Не умеют их писать. Не понимают что это такое. Отсюда растут ноги всех проблем. Особенно SELECT N+1.

stenfordДополнительный вопрос про память отьедаемый им на сервере, при загрузке контекста от сжирает гиг памяти сервера, это нормально?

Нет, это абсолютно не нормально. Скорее всего вы работаете с конеткстом неправильно.
...
Рейтинг: 0 / 0
Производительность EF
    #39497485
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКратко: хранимки быстрее.

Неизвестно, какие конкретно запросы вы собираетесь сравнивать. EF бы на свет не появился и дожил до наших дней, если бы овчинка не стоила бы выделенки.

Сравнивать пытаюсь типичные запросы, с несколькими джойнами к примеру и компилированием из этого нужного класса.

hVosttСкорее всего ответственность лежит на неправильном употреблении EF. Это самая распространённая проблема. EF конечно накладывает определённый оверхед и по памяти и по скорости, но обычно этим можно пренебречь.

А какой именно оверхэд? Я понимаю что все условно, но на сферическом сервере в вакууме сколько этот оверхэд получится на типичном запросе, 5 миллисекунд, 100 миллисекунд, полсекунды?


hVosttЕсли делаете запросы на получение данных, пишите проекции. Основная проблема тех, кто осваивает EF — они не пишут проекции. Не умеют их писать. Не понимают что это такое. Отсюда растут ноги всех проблем. Особенно SELECT N+1.

Я предполагаю что запрос написан правильно, т.е. никаких вытягиваний из базы лишних вещей и 100 запросов вместо одного. Условно есть запрос, который исходит от EF и я точно такой-же сложу в хранимку, которую вызову через ADO и замаплю на свой класс вручную. Какой примерно оверхэд и в каком именно месте появится, скажем создание контекста и прочие вещи которые EF будет делать. Предположим также что количество таблиц большое, несколько сотен с десятками полей в каждом (если вдруг это влияет как-то на контекст т.к. как я вижу все эти классы там есть).
В ADO вызов хранумки происходит быстро и просто, а вот чем именно EF занимается пока не совсем ясно.


hVostt EF бы на свет не появился и дожил до наших дней, если бы овчинка не стоила бы выделенки.

Основная цель EF это-же упрощение маппинга на классы, он это делает и поэтому овчинка до сих пор жива, но меня интересует сколько именно в граммах мы теряем производительности на этом
...
Рейтинг: 0 / 0
Производительность EF
    #39497486
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford,
Хранимки для Отчетов и 'Закрытие оперДня'.
А для CRUD ничего тормозить не может.
...
Рейтинг: 0 / 0
Производительность EF
    #39497521
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordСравнивать пытаюсь типичные запросы, с несколькими джойнами к примеру и компилированием из этого нужного класса.

И как успехи? Как сравниваете?


stenfordА какой именно оверхэд? Я понимаю что все условно, но на сферическом сервере в вакууме сколько этот оверхэд получится на типичном запросе, 5 миллисекунд, 100 миллисекунд, полсекунды?

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/performance-considerations

Ну напишите бенчмарки по своим запросам. Я-то откуда знаю, какие у вас там запросы. У нас проблем не было.


stenfordВ ADO вызов хранумки происходит быстро и просто, а вот чем именно EF занимается пока не совсем ясно.

EF генерирует запросы из LINQ, и маппит полученные данные на объекты классов, проксирует классы для отслеживания изменений, делает INSERT/UPDATE при сохранении. Ещё кеширует сущности в рамках жизни одного контекста.

Делайте бенчмарки. Или показывайте свои запросы, свой контекст и как вы с ним работаете.
Лично я не наделён способностью к телепатии.
...
Рейтинг: 0 / 0
Производительность EF
    #39497587
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford,
Удобства ОРМ при CRUD просто превышают некоторую потерю производительности.
Она не существенна.
Попробуй докажи обратное.
...
Рейтинг: 0 / 0
Производительность EF
    #39497591
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordа вот чем именно EF занимается пока не совсем ясно.
У EF можно включить логгирование и смотреть какие запросы EF шлет на сервер.
...
Рейтинг: 0 / 0
Производительность EF
    #39498699
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordДополнительный вопрос про память отьедаемый им на сервере, при загрузке контекста от сжирает гиг памяти сервера, это нормально?
Нутром чую, что tracking включен. Отключить.

stenford апдейты и инсерты
Массовые операции в EF сосут. Ускорить.
...
Рейтинг: 0 / 0
Производительность EF
    #39505880
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем - требуется помощь.
В общем сервак SQLAnywhere, наконец удалось установить EF6 и создать модель БД под нее, БД здоровенная - несколько сотен
таблиц и пару тысяч процедур и размер 20 гиг.
Но проблема в следующем - работал раньше через ado.net вызывал определенную ХП сервера (select) - выполнялась она около 4 сек, выполняю ее из EF - 28 сек.
Помогите - где что надо подкрутить чтоб EF хотябы за 6 сек ее обрабатывал. День гуглю - а воз и ныне там.
Вот код:
Код: c#
1.
2.
Entities DBContext = new Entities();
List<gcPoolSelectAll_Result> list = DBContext.gcPoolSelectAll("001", Convert.ToDateTime("2016.05.01"), Convert.ToDateTime("2016.06.01"), -1, 0).ToList();
...
Рейтинг: 0 / 0
Производительность EF
    #39505899
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что говорит SQL-профайлер?
Реально сколько на сервере выполняется ХП? Она возвращает что-нить в клиента или просто внутри себя данные обрабатывает?
...
Рейтинг: 0 / 0
Производительность EF
    #39505918
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Вангую, что это - Parameter Sniffing. Одна из рекомендаций - не использовать входные параметры в запросах хп, а загонять их в локальные переменные.
...
Рейтинг: 0 / 0
Производительность EF
    #39505920
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и вообще явные/неявные преобразования типов могут далеко от оптимальных запросам. LINQ тут не причем. Может он и тормозной, но не до такой-же степени.
...
Рейтинг: 0 / 0
Производительность EF
    #39505931
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микола ПитерскийНо проблема в следующем - работал раньше через ado.net вызывал определенную ХП сервера (select) - выполнялась она около 4 сек, выполняю ее из EF - 28 сек.

Это невозможно, так как сам EF ничего не делает для ХП, это всё также делается через ADO.NET поверх которой реализован EF.

Короч EF не «обрабатывает» никакие ХП. Скорее всего результат слишком огромный и происходит длительная материализация запроса в ToList(). Совет может только один в данном случае: юзай пейджинг.
...
Рейтинг: 0 / 0
Производительность EF
    #39505945
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микола ПитерскийНо проблема в следующем - работал раньше через ado.net вызывал определенную ХП сервера (select) - выполнялась она около 4 сек, выполняю ее из EF - 28 сек.
Помогите - где что надо подкрутить чтоб EF хотябы за 6 сек ее обрабатывал. День гуглю - а воз и ныне там.
Для начала включи лог запросов что EF на SQL-сервер шлет, затем поизучай. EF хоть и тормоз, но не настолько.
...
Рейтинг: 0 / 0
Производительность EF
    #39505953
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterShocker.Pro,

Вангую, что это - Parameter Sniffing. Одна из рекомендаций - не использовать входные параметры в запросах хп, а загонять их в локальные переменные.присоединяюсь к вангованию и обращению к профайлеру.
сначала посмотреть, где пропало время, и если на скуле, то разобрать план того запроса, что отправляет EF.
...
Рейтинг: 0 / 0
Производительность EF
    #39505987
31lqs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все касается пока нету большой оперативки, а там уже ин-мемори:) Все аргументы в этом посту применимы лишь к годам 5 назад...hVosttstenford,

stenfordСуществуют-ли какие-то данные о производительности EF в сравнении с хранимками?

Кратко: хранимки быстрее.

Неизвестно, какие конкретно запросы вы собираетесь сравнивать. EF бы на свет не появился и дожил до наших дней, если бы овчинка не стоила бы выделенки.

stenfordНа данный момент проект который мы делаем с его помощью не отличается заметной производительностью, и по-видимому часть ответственности за это лежит на EF.

Скорее всего ответственность лежит на неправильном употреблении EF. Это самая распространённая проблема. EF конечно накладывает определённый оверхед и по памяти и по скорости, но обычно этим можно пренебречь.

stenfordПричем я не имею ввиду какие-то моменты где EF используется неправильно или неоптимально, интересует именно то, насколько EF медленнее в обычных запросах написанный "правильно" с точки зрения EF. Под обычными имеются ввиду запросы с несколькими джойнами, апдейты и инсерты в несколько таблиц.

Если делаете запросы на получение данных, пишите проекции. Основная проблема тех, кто осваивает EF — они не пишут проекции. Не умеют их писать. Не понимают что это такое. Отсюда растут ноги всех проблем. Особенно SELECT N+1.

stenfordДополнительный вопрос про память отьедаемый им на сервере, при загрузке контекста от сжирает гиг памяти сервера, это нормально?

Нет, это абсолютно не нормально. Скорее всего вы работаете с конеткстом неправильно.
...
Рейтинг: 0 / 0
Производительность EF
    #39505992
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
31lqsЭто все касается пока нету большой оперативки, а там уже ин-мемори:) Все аргументы в этом посту применимы лишь к годам 5 назад...

Серьёзно что ли? Ин мемори? 5 лет назад оперативку ещё не придумали?
...
Рейтинг: 0 / 0
Производительность EF
    #39505997
31lqs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt31lqsЭто все касается пока нету большой оперативки, а там уже ин-мемори:) Все аргументы в этом посту применимы лишь к годам 5 назад...

Серьёзно что ли? Ин мемори? 5 лет назад оперативку ещё не придумали? Серьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:)
...
Рейтинг: 0 / 0
Производительность EF
    #39505998
31lqs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
31lqshVosttпропущено...


Серьёзно что ли? Ин мемори? 5 лет назад оперативку ещё не придумали? Серьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:)Ну и все процедурки и проч в инмемори - идеал, чтобы твоя десятитерабитовая база - вся стояла в быстрой памяти, а лучше - в кэшэ проца, стремись:)
...
Рейтинг: 0 / 0
Производительность EF
    #39506000
31lqs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
31lqs31lqsпропущено...
Серьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:)Ну и все процедурки и проч в инмемори - идеал, чтобы твоя десятитерабитовая база - вся стояла в быстрой памяти, а лучше - в кэшэ проца, стремись:)В скуле же написано, как делать инмемори процедуры и проч, про оракл не в курсе.
...
Рейтинг: 0 / 0
Производительность EF
    #39506001
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
31lqsСерьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:)

Тебе наклеечку может выдать «великий открыватель глаз»?

Откуда ж вы берётесь гении, то один со своими хранимками, то другой со своей ин мемори?
Как будто в школе день открытых дверей и каждый считает своим долгом ляпнуть какую-то чушь с видом полного знания дела.
...
Рейтинг: 0 / 0
Производительность EF
    #39506005
31lqs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt31lqsСерьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:)

Тебе наклеечку может выдать «великий открыватель глаз»?

Откуда ж вы берётесь гении, то один со своими хранимками, то другой со своей ин мемори?
Как будто в школе день открытых дверей и каждый считает своим долгом ляпнуть какую-то чушь с видом полного знания дела.Просто хотел помочь, чем знаю...
...
Рейтинг: 0 / 0
Производительность EF
    #39506058
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело оказалось не в EF - на этой же машине проверил работу с ADO.NET и результат такой же медленный, дело вроде как в клиентских компонентах сайбеса - на этой машине они более новой версии чем на серваке.
Так что EF имеет право на жизнь. Всем спасибо!
...
Рейтинг: 0 / 0
Производительность EF
    #39506114
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
31lqsПросто хотел помочь, чем знаю...
Вот только не помогли.

Объяснили бы толком, что предлагаете: обновить версию SQL Server, оперативы добавить и на in memory мигрировать?
...
Рейтинг: 0 / 0
Производительность EF
    #39506116
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, я дико извиняюсь что сейчас совсем не в тему, но как то стыдно создавать отдельный топик.

Код: c#
1.
2.
var a = DBContext.gcPoolSelectAll("001", Convert.ToDateTime("2016.05.01"), Convert.ToDateTime("2016.06.01"), -1, 0);
List<gcPoolSelectAll_Result> list = a.ToList();



1 - я строка отрабатывает за 2 сек
2 - я строка отрабатывает 25 сек

Данных там реально много, но как так если удаленный сервак обрабатывает и присылает огромную кучу данных за 2 сек, то
.NET чтобы просто разгребти эти данные требуется более 20 сек.
Помогите - я в замешательстве. Этот код из реально работающего приложения, но то приложение было скомпилировано в VS2012,
а я это дело пробую в VS2013. EF тут совсем не причем -т.к. аналогична ситуация и с ADO.NET под VS2013.

Где собака порылась?
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Производительность EF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]