Лучшая производительность с использованием Linq и Anonymous Types? - PullRequest
0 голосов
/ 19 июля 2011

Я использую C #, Linq и EF4.

У меня есть интерфейс для моего сайта, мне нужно отображать (только для чтения) данные из моей базы данных на моих веб-страницах.

Я хотел бы знать, что может помочь мне достичь более быстрых (только для чтения) результатов для моих пользователей.

Вот некоторая идея, которую я собираюсь реализовать.

  • A - Использование Linq и анонимных типов, поэтому я могу выбрать только те свойства, которые мне нужно отобразить (используя EF), и сэкономить память. Пожалуйста, скажите мне, если это увеличит скорость.
  • B - Предварительная компиляция моих запросов.
  • C - отключить опцию отслеживания моих объектов BojectContext в EF.

Пожалуйста, расскажите, что вы думаете специально для пункта А. Спасибо за вашу помощь!

Ответы [ 3 ]

2 голосов
/ 19 июля 2011

Если у вас работает функционал, и если вам нужно оптимизировать, то я думаю, что первым шагом является измерение. В качестве первого шага попробуйте использовать профилировщик SO, чтобы увидеть, где ваше приложение потребляет время http://code.google.com/p/mvc-mini-profiler/

После измерения вы можете поэкспериментировать с A, B или C - или вы можете определить совершенно другую область для оптимизации. (Моя любимая область для оптимизации EF - загруженные ленивые объекты)


Обновление (в ответ на комментарий): Честно говоря, я не ожидаю, что A, B или C выиграют вам какое-то значительное время - вам нужно измерить - это единственный способ узнать, где можно сделать оптимизацию. После того, как вы измерили, я предполагаю, что ни один из A, B или C не сэкономит вам сколько-нибудь значительного времени.

0 голосов
/ 16 октября 2013

Я согласен с предыдущим ответом, сначала измерить производительность. Это скажет вам, какие методы используют больше всего времени обработки. Это не эффективное использование времени, чтобы придумать что-то новое, прежде чем понять проблему. Тем не менее, это хорошая идея, чтобы узнать новые вещи, чтобы у вас было больше инструментов. Придет подходящее время, когда вы сможете использовать свои новые инструменты.

ANTS - отличный инструмент для измерения производительности. У них есть хорошие учебные пособия, и они бесплатны в течение 14 дней использования, достаточно времени, чтобы найти проблемы.

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

0 голосов
/ 19 июля 2011

Я чувствую, что все ваши A, B и C великолепны и дополнительно

  1. У вас могут быть индексы на уровне базы данных.Если вы используете SQL Server, вы можете использовать помощник по настройке базы данных для настройки базы данных для ваших запросов.

  2. Если вы используете Entity SQL, он будет немного быстрее, чем LINQ http://blogs.msdn.com/b/adonet/archive/2008/03/27/ado-net-entity-framework-performance-comparison.aspx

и прочитайте это также http://blogs.msdn.com/b/dparys/archive/2009/04/06/improving-entity-framework-performance.aspx

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