powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Оптимизация linq запроса
7 сообщений из 7, страница 1 из 1
Оптимизация linq запроса
    #38852285
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, есть у нас в отделе принципиальный прожект-менеджер, который любит, чтобы код был оптимизирован только так, как он считает нужным. Собственно дело в том, что у меня linq запросы написаны с использованием объекта ExpandoObject, например:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
object obj = db
    .CalculateWebApplicationAvailability(dateFrom, dateTo, item, userID)
    .Select(sel =>
    {
        dynamic expando = new ExpandoObject();
        expando.id = sel.AppID;
        expando.order = sel.Order;
        expando.name = sel.AppName;
        expando.availability = new ExpandoObject();
        expando.availability.code = sel.Code;
        expando.availability.value = sel.AvValue;
        return expando;
    })
    .FirstOrDefault();


именно такого вида запросы позволили мне сократить код дальнейшей обработки объектов внутри запроса, т.к. мне теперь не нужно использовать рефлексию, а работать просто как с IDictionary объектами.
Так вот он говорит, что это не очень правильно и затратно, типа он то будет работать, но нужно писать только вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
object obj = slic
    .CalculateWebApplicationAvailability(dateFrom, dateTo, item, userID)
    .Select(sel => new
    {
        id = sel.AppID,
        order = sel.Order,
        name = sel.AppName,
        availability = new 
        {
            code = sel.Code,
            value = sel.AvValue
        }
    })
    .FirstOrDefault();


Т.к наш прожект-менеджер не во всех случаях говорит правильно про оптимизацию (бывает такое), хотелось бы узнать, действительно ли ExpandoObject такой затратный для памяти, времени запроса и т.д.?
...
Рейтинг: 0 / 0
Оптимизация linq запроса
    #38852322
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sanprof, твой менеджер прав. dynamic добавляет накладные расходы на обращение к своим членам, а анонимный объект нет. Еще одно достоинство анонимного объекта - строгая типизация в паре с intellisense, который станет виден если заменить object на var.
...
Рейтинг: 0 / 0
Оптимизация linq запроса
    #38852351
Sanprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет типизации и intellisence я знаю, но структура классов построена так, что классы наследники только формируют списки объектов и не обрабатывают их, а обрабатываются они в классе родителе, тоесть в классе родителе я работаю с List<Object>, поэтому я и говорил про рефлексию. Тоесть сейчас важна суммарная оптимизиция Linq запрос + дальнейшая обработка объектов типа Object, что будет обтимальней: анонимный обеъкт + рефлексия или IDictionary и его бращения к своим членам?
...
Рейтинг: 0 / 0
Оптимизация linq запроса
    #38852391
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sanprof, раз обработка данных идет в другой функции, то правильнее будет создать классы для этих данных. Это разумеется потребует переделки кода. Что касается оптимальности по памяти и скорости, то это следует сравнивать с помощью профайлера.
...
Рейтинг: 0 / 0
Оптимизация linq запроса
    #38852450
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном конкретном случае, непонятно... о какой вообще оптимизации идет речь?
Единственное место для неё потроха -> CalculateWebApplicationAvailability
linq, тут как бы неуместен...
...
Рейтинг: 0 / 0
Оптимизация linq запроса
    #38852857
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanprofТ.к наш прожект-менеджер не во всех случаях говорит правильно про оптимизацию (бывает такое), хотелось бы узнать, действительно ли ExpandoObject такой затратный для памяти, времени запроса и т.д.?Возьми профайлер и измерь.
...
Рейтинг: 0 / 0
Оптимизация linq запроса
    #38856524
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпрожект-менеджер и авторкод всегда думал что эти где-то в разных измерениях существуют..
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Оптимизация linq запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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