EF 4.2 Влияние автоматически скомпилированных запросов linq - PullRequest
3 голосов
/ 07 сентября 2011

Из MSDN magazine :

Июньская CTP поддерживает новую функцию, которая называется Auto-Compiled LINQ. Запросы, которые позволяют выполнять каждый запрос LINQ to Entities автоматически компилируется и помещается в кэш запросов EF. каждый при последующем выполнении запроса EF найдет его в своем запросе кэша и не нужно проходить весь процесс компиляции еще раз.

Я думал, что рекомендуется компилировать запросы, которые вы часто выполняете, из-за времени, которое требуется для компиляции запроса? Так улучшен ли процесс компиляции, что рекомендуется сделать это?

Спасибо.

1 Ответ

3 голосов
/ 07 сентября 2011

Есть две статьи ( блог команды ADO.NET , блог Джулии Лерман * ) об автоматически скомпилированных запросах, которые дадут вам некоторое представление о производительности.Каковы основные моменты автоматически скомпилированных запросов и производительности:

  • Функция может быть отключена глобально
  • Функцией можно управлять в соответствии с ObjectQuery (но в настоящее время есть некоторые проблемы)
  • Не слишком разбираясь во внутренних функциях, я полагаю, что эта функция должна быть быстрее даже для редко используемых запросов - она ​​только увеличит потребление памяти.Если вы каждый раз составляете запрос, дерево выражений должно каждый раз проходиться и интерпретироваться как параметризованный SQL (я проверил один раз внутреннюю реализацию, и она действительно следует некоторым правилам построения компилятора / интерпретатора).Я сделал очень быструю проверку этой новой реализации кеша, и похоже, что автокомпиляция внутренне сохранит прототип DbCommand, используемый для выполнения запроса.Таким образом, единственное, что должно быть сделано в следующий раз при вызове запроса, - это обойти дерево выражений и вычислить его хеш, чтобы найти эту кешированную DbCommand и создать клон ее клона, который будет выполнен.

Но это в основном мои предположения, поэтому только фактическое использование покажет, действительно ли это правда.

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