Почему Linq to Entities такой медленный, когда на него впервые ссылаются - PullRequest
3 голосов
/ 12 мая 2011

при использовании Entity Framework 4.0 создается впечатление, что в первый раз, когда операция выполняется (чтение или запись) для контекста объекта объектной инфраструктуры, она занимает на несколько порядков дольше, чем во второй раз. Например, первый запрос может занять 10 секунд (да секунд), а второй - 0,1 секунды.

Я предполагаю, что при первом создании объектного контекста он должен создавать какие-то структуры данных сцены? Это анализ файла EDMX (я думал, что это будет сделано во время компиляции?)

Ответы [ 3 ]

5 голосов
/ 12 мая 2011

Это построение представлений, которые кэшируются при последующих вызовах.

Вы можете предварительно сгенерировать представления, чтобы избежать первого снижения производительности:

http://www.dotnetspark.com/kb/3706-optimizing-performance.aspx

1 голос
/ 12 мая 2011

У EF есть начальные затраты на загрузку метаданных Entity Data Model (EDM) в память, предварительную компиляцию представлений и другие одноразовые операции, вы можете попробовать использовать разогревающий запрос, чтобы обойти это.

0 голосов
/ 12 мая 2011

Возможно, у вас проблема с таблицей БД, для которой вы выполняете запрос. Итак, при первом запуске EF он компилирует ваш запрос, создает план выполнения и т. Д., Поэтому, когда вы запускаете второй раз, БД использует кэшированную версию вашего запроса. Попробуйте добавить индексы в свою таблицу и посмотрите, поможет ли это.

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