|
Производительность EF
|
|||
---|---|---|---|
#18+
Существуют-ли какие-то данные о производительности EF в сравнении с хранимками? Я могу сделать свои собственные тесты, но возможно это уже кем-то сделано. На данный момент проект который мы делаем с его помощью не отличается заметной производительностью, и по-видимому часть ответственности за это лежит на EF. Причем я не имею ввиду какие-то моменты где EF используется неправильно или неоптимально, интересует именно то, насколько EF медленнее в обычных запросах написанный "правильно" с точки зрения EF. Под обычными имеются ввиду запросы с несколькими джойнами, апдейты и инсерты в несколько таблиц. Дополнительный вопрос про память отьедаемый им на сервере, при загрузке контекста от сжирает гиг памяти сервера, это нормально? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2017, 02:39 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
stenford, stenfordСуществуют-ли какие-то данные о производительности EF в сравнении с хранимками? Кратко: хранимки быстрее. Неизвестно, какие конкретно запросы вы собираетесь сравнивать. EF бы на свет не появился и дожил до наших дней, если бы овчинка не стоила бы выделенки. stenfordНа данный момент проект который мы делаем с его помощью не отличается заметной производительностью, и по-видимому часть ответственности за это лежит на EF. Скорее всего ответственность лежит на неправильном употреблении EF. Это самая распространённая проблема. EF конечно накладывает определённый оверхед и по памяти и по скорости, но обычно этим можно пренебречь. stenfordПричем я не имею ввиду какие-то моменты где EF используется неправильно или неоптимально, интересует именно то, насколько EF медленнее в обычных запросах написанный "правильно" с точки зрения EF. Под обычными имеются ввиду запросы с несколькими джойнами, апдейты и инсерты в несколько таблиц. Если делаете запросы на получение данных, пишите проекции. Основная проблема тех, кто осваивает EF — они не пишут проекции. Не умеют их писать. Не понимают что это такое. Отсюда растут ноги всех проблем. Особенно SELECT N+1. stenfordДополнительный вопрос про память отьедаемый им на сервере, при загрузке контекста от сжирает гиг памяти сервера, это нормально? Нет, это абсолютно не нормально. Скорее всего вы работаете с конеткстом неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2017, 06:58 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
hVosttКратко: хранимки быстрее. Неизвестно, какие конкретно запросы вы собираетесь сравнивать. EF бы на свет не появился и дожил до наших дней, если бы овчинка не стоила бы выделенки. Сравнивать пытаюсь типичные запросы, с несколькими джойнами к примеру и компилированием из этого нужного класса. hVosttСкорее всего ответственность лежит на неправильном употреблении EF. Это самая распространённая проблема. EF конечно накладывает определённый оверхед и по памяти и по скорости, но обычно этим можно пренебречь. А какой именно оверхэд? Я понимаю что все условно, но на сферическом сервере в вакууме сколько этот оверхэд получится на типичном запросе, 5 миллисекунд, 100 миллисекунд, полсекунды? hVosttЕсли делаете запросы на получение данных, пишите проекции. Основная проблема тех, кто осваивает EF — они не пишут проекции. Не умеют их писать. Не понимают что это такое. Отсюда растут ноги всех проблем. Особенно SELECT N+1. Я предполагаю что запрос написан правильно, т.е. никаких вытягиваний из базы лишних вещей и 100 запросов вместо одного. Условно есть запрос, который исходит от EF и я точно такой-же сложу в хранимку, которую вызову через ADO и замаплю на свой класс вручную. Какой примерно оверхэд и в каком именно месте появится, скажем создание контекста и прочие вещи которые EF будет делать. Предположим также что количество таблиц большое, несколько сотен с десятками полей в каждом (если вдруг это влияет как-то на контекст т.к. как я вижу все эти классы там есть). В ADO вызов хранумки происходит быстро и просто, а вот чем именно EF занимается пока не совсем ясно. hVostt EF бы на свет не появился и дожил до наших дней, если бы овчинка не стоила бы выделенки. Основная цель EF это-же упрощение маппинга на классы, он это делает и поэтому овчинка до сих пор жива, но меня интересует сколько именно в граммах мы теряем производительности на этом ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2017, 07:38 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
stenford, Хранимки для Отчетов и 'Закрытие оперДня'. А для CRUD ничего тормозить не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2017, 07:40 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
stenfordСравнивать пытаюсь типичные запросы, с несколькими джойнами к примеру и компилированием из этого нужного класса. И как успехи? Как сравниваете? stenfordА какой именно оверхэд? Я понимаю что все условно, но на сферическом сервере в вакууме сколько этот оверхэд получится на типичном запросе, 5 миллисекунд, 100 миллисекунд, полсекунды? https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/performance-considerations Ну напишите бенчмарки по своим запросам. Я-то откуда знаю, какие у вас там запросы. У нас проблем не было. stenfordВ ADO вызов хранумки происходит быстро и просто, а вот чем именно EF занимается пока не совсем ясно. EF генерирует запросы из LINQ, и маппит полученные данные на объекты классов, проксирует классы для отслеживания изменений, делает INSERT/UPDATE при сохранении. Ещё кеширует сущности в рамках жизни одного контекста. Делайте бенчмарки. Или показывайте свои запросы, свой контекст и как вы с ним работаете. Лично я не наделён способностью к телепатии. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2017, 09:01 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
stenford, Удобства ОРМ при CRUD просто превышают некоторую потерю производительности. Она не существенна. Попробуй докажи обратное. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2017, 10:29 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
stenfordа вот чем именно EF занимается пока не совсем ясно. У EF можно включить логгирование и смотреть какие запросы EF шлет на сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2017, 10:34 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
stenfordДополнительный вопрос про память отьедаемый им на сервере, при загрузке контекста от сжирает гиг памяти сервера, это нормально? Нутром чую, что tracking включен. Отключить. stenford апдейты и инсерты Массовые операции в EF сосут. Ускорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2017, 00:02 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Привет всем - требуется помощь. В общем сервак SQLAnywhere, наконец удалось установить EF6 и создать модель БД под нее, БД здоровенная - несколько сотен таблиц и пару тысяч процедур и размер 20 гиг. Но проблема в следующем - работал раньше через ado.net вызывал определенную ХП сервера (select) - выполнялась она около 4 сек, выполняю ее из EF - 28 сек. Помогите - где что надо подкрутить чтоб EF хотябы за 6 сек ее обрабатывал. День гуглю - а воз и ныне там. Вот код: Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 18:07 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Что говорит SQL-профайлер? Реально сколько на сервере выполняется ХП? Она возвращает что-нить в клиента или просто внутри себя данные обрабатывает? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 18:26 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Shocker.Pro, Вангую, что это - Parameter Sniffing. Одна из рекомендаций - не использовать входные параметры в запросах хп, а загонять их в локальные переменные. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 19:09 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Да и вообще явные/неявные преобразования типов могут далеко от оптимальных запросам. LINQ тут не причем. Может он и тормозной, но не до такой-же степени. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 19:11 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Микола ПитерскийНо проблема в следующем - работал раньше через ado.net вызывал определенную ХП сервера (select) - выполнялась она около 4 сек, выполняю ее из EF - 28 сек. Это невозможно, так как сам EF ничего не делает для ХП, это всё также делается через ADO.NET поверх которой реализован EF. Короч EF не «обрабатывает» никакие ХП. Скорее всего результат слишком огромный и происходит длительная материализация запроса в ToList(). Совет может только один в данном случае: юзай пейджинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 19:52 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Микола ПитерскийНо проблема в следующем - работал раньше через ado.net вызывал определенную ХП сервера (select) - выполнялась она около 4 сек, выполняю ее из EF - 28 сек. Помогите - где что надо подкрутить чтоб EF хотябы за 6 сек ее обрабатывал. День гуглю - а воз и ныне там. Для начала включи лог запросов что EF на SQL-сервер шлет, затем поизучай. EF хоть и тормоз, но не настолько. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 20:50 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Relic HunterShocker.Pro, Вангую, что это - Parameter Sniffing. Одна из рекомендаций - не использовать входные параметры в запросах хп, а загонять их в локальные переменные.присоединяюсь к вангованию и обращению к профайлеру. сначала посмотреть, где пропало время, и если на скуле, то разобрать план того запроса, что отправляет EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2017, 21:23 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Это все касается пока нету большой оперативки, а там уже ин-мемори:) Все аргументы в этом посту применимы лишь к годам 5 назад...hVosttstenford, stenfordСуществуют-ли какие-то данные о производительности EF в сравнении с хранимками? Кратко: хранимки быстрее. Неизвестно, какие конкретно запросы вы собираетесь сравнивать. EF бы на свет не появился и дожил до наших дней, если бы овчинка не стоила бы выделенки. stenfordНа данный момент проект который мы делаем с его помощью не отличается заметной производительностью, и по-видимому часть ответственности за это лежит на EF. Скорее всего ответственность лежит на неправильном употреблении EF. Это самая распространённая проблема. EF конечно накладывает определённый оверхед и по памяти и по скорости, но обычно этим можно пренебречь. stenfordПричем я не имею ввиду какие-то моменты где EF используется неправильно или неоптимально, интересует именно то, насколько EF медленнее в обычных запросах написанный "правильно" с точки зрения EF. Под обычными имеются ввиду запросы с несколькими джойнами, апдейты и инсерты в несколько таблиц. Если делаете запросы на получение данных, пишите проекции. Основная проблема тех, кто осваивает EF — они не пишут проекции. Не умеют их писать. Не понимают что это такое. Отсюда растут ноги всех проблем. Особенно SELECT N+1. stenfordДополнительный вопрос про память отьедаемый им на сервере, при загрузке контекста от сжирает гиг памяти сервера, это нормально? Нет, это абсолютно не нормально. Скорее всего вы работаете с конеткстом неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 00:06 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
31lqsЭто все касается пока нету большой оперативки, а там уже ин-мемори:) Все аргументы в этом посту применимы лишь к годам 5 назад... Серьёзно что ли? Ин мемори? 5 лет назад оперативку ещё не придумали? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 00:34 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
hVostt31lqsЭто все касается пока нету большой оперативки, а там уже ин-мемори:) Все аргументы в этом посту применимы лишь к годам 5 назад... Серьёзно что ли? Ин мемори? 5 лет назад оперативку ещё не придумали? Серьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 02:11 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
31lqshVosttпропущено... Серьёзно что ли? Ин мемори? 5 лет назад оперативку ещё не придумали? Серьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:)Ну и все процедурки и проч в инмемори - идеал, чтобы твоя десятитерабитовая база - вся стояла в быстрой памяти, а лучше - в кэшэ проца, стремись:) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 02:20 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
31lqs31lqsпропущено... Серьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:)Ну и все процедурки и проч в инмемори - идеал, чтобы твоя десятитерабитовая база - вся стояла в быстрой памяти, а лучше - в кэшэ проца, стремись:)В скуле же написано, как делать инмемори процедуры и проч, про оракл не в курсе. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 02:23 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
31lqsСерьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:) Тебе наклеечку может выдать «великий открыватель глаз»? Откуда ж вы берётесь гении, то один со своими хранимками, то другой со своей ин мемори? Как будто в школе день открытых дверей и каждый считает своим долгом ляпнуть какую-то чушь с видом полного знания дела. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 02:35 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
hVostt31lqsСерьезно. Оперативку придумали давно, но МНОГО ее стало недавно. Переваривай:) Тебе наклеечку может выдать «великий открыватель глаз»? Откуда ж вы берётесь гении, то один со своими хранимками, то другой со своей ин мемори? Как будто в школе день открытых дверей и каждый считает своим долгом ляпнуть какую-то чушь с видом полного знания дела.Просто хотел помочь, чем знаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 03:51 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Дело оказалось не в EF - на этой же машине проверил работу с ADO.NET и результат такой же медленный, дело вроде как в клиентских компонентах сайбеса - на этой машине они более новой версии чем на серваке. Так что EF имеет право на жизнь. Всем спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 09:07 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
31lqsПросто хотел помочь, чем знаю... Вот только не помогли. Объяснили бы толком, что предлагаете: обновить версию SQL Server, оперативы добавить и на in memory мигрировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 10:21 |
|
Производительность EF
|
|||
---|---|---|---|
#18+
Ребят, я дико извиняюсь что сейчас совсем не в тему, но как то стыдно создавать отдельный топик. Код: c# 1. 2.
1 - я строка отрабатывает за 2 сек 2 - я строка отрабатывает 25 сек Данных там реально много, но как так если удаленный сервак обрабатывает и присылает огромную кучу данных за 2 сек, то .NET чтобы просто разгребти эти данные требуется более 20 сек. Помогите - я в замешательстве. Этот код из реально работающего приложения, но то приложение было скомпилировано в VS2012, а я это дело пробую в VS2013. EF тут совсем не причем -т.к. аналогична ситуация и с ADO.NET под VS2013. Где собака порылась? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2017, 10:32 |
|
|
start [/forum/topic.php?fid=17&fpage=7&tid=1349269]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 173ms |
0 / 0 |