|
Оптимизация linq запроса
|
|||
---|---|---|---|
#18+
Здравствуйте, есть у нас в отделе принципиальный прожект-менеджер, который любит, чтобы код был оптимизирован только так, как он считает нужным. Собственно дело в том, что у меня linq запросы написаны с использованием объекта ExpandoObject, например: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
именно такого вида запросы позволили мне сократить код дальнейшей обработки объектов внутри запроса, т.к. мне теперь не нужно использовать рефлексию, а работать просто как с IDictionary объектами. Так вот он говорит, что это не очень правильно и затратно, типа он то будет работать, но нужно писать только вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Т.к наш прожект-менеджер не во всех случаях говорит правильно про оптимизацию (бывает такое), хотелось бы узнать, действительно ли ExpandoObject такой затратный для памяти, времени запроса и т.д.? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2015, 14:53 |
|
Оптимизация linq запроса
|
|||
---|---|---|---|
#18+
Sanprof, твой менеджер прав. dynamic добавляет накладные расходы на обращение к своим членам, а анонимный объект нет. Еще одно достоинство анонимного объекта - строгая типизация в паре с intellisense, который станет виден если заменить object на var. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2015, 15:17 |
|
Оптимизация linq запроса
|
|||
---|---|---|---|
#18+
Насчет типизации и intellisence я знаю, но структура классов построена так, что классы наследники только формируют списки объектов и не обрабатывают их, а обрабатываются они в классе родителе, тоесть в классе родителе я работаю с List<Object>, поэтому я и говорил про рефлексию. Тоесть сейчас важна суммарная оптимизиция Linq запрос + дальнейшая обработка объектов типа Object, что будет обтимальней: анонимный обеъкт + рефлексия или IDictionary и его бращения к своим членам? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2015, 15:36 |
|
Оптимизация linq запроса
|
|||
---|---|---|---|
#18+
Sanprof, раз обработка данных идет в другой функции, то правильнее будет создать классы для этих данных. Это разумеется потребует переделки кода. Что касается оптимальности по памяти и скорости, то это следует сравнивать с помощью профайлера. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2015, 16:19 |
|
Оптимизация linq запроса
|
|||
---|---|---|---|
#18+
В данном конкретном случае, непонятно... о какой вообще оптимизации идет речь? Единственное место для неё потроха -> CalculateWebApplicationAvailability linq, тут как бы неуместен... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2015, 17:03 |
|
Оптимизация linq запроса
|
|||
---|---|---|---|
#18+
SanprofТ.к наш прожект-менеджер не во всех случаях говорит правильно про оптимизацию (бывает такое), хотелось бы узнать, действительно ли ExpandoObject такой затратный для памяти, времени запроса и т.д.?Возьми профайлер и измерь. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2015, 10:31 |
|
|
start [/forum/topic.php?fid=17&gotonew=1&tid=1349644]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
196ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 295ms |
0 / 0 |