Информация об изменениях

Сообщение Re[93]: Тормознутость и кривость linq от 28.04.2016 12:06

Изменено 28.04.2016 12:24 Serginio1

Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, ·, Вы писали:


_>·>В смысле в аналог linq? И в чём прикол точить эту шашку два года, когда есть готовая.


_>Ну вот на SO в начале использовали Linq, а потом выкинули его в помойку в пользу использования голых строк. Наверное там ничего не имеющие непрофессионалы сидят, да? ))) В отличие от многочисленных экспертов-теоретиков с нашего форума. )))


N>>>Питон — это потому, что мне легче на нём быстро формулировать. Мог быть любой другой язык.

_>·>Так собственно linq это и делает у себя внутрях по сути во время runtime, а alex_public говорил что это тормоза — используйте compile time.

_>Ничего подобного. Linq делает не это. Точнее не только это. В начале он анализирует (через тормозную рефлексию) выражение и генерирует из него код склейки и только потом запускает собственно этот код. Причём как раз этот анализ занимает во много раз больше времени, чем собственно склейка строк. И именно оттуда и идут тормоза.

О поподробнее пожалуйста. Там на самом деле деревья выражений https://habrahabr.ru/post/279367/
Кроме того запросы кэшируются если это возможно после первого вызова так как заранее не известен провайдер, так что основные затраты только на первый вызов.
Там где динамические запросы обычно время вызова значительно выше времени компиляции запроса. Не забывай, что на стороне сервера такие запросы могут быть не закэшированы из-за множества вариаций
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, ·, Вы писали:


_>·>В смысле в аналог linq? И в чём прикол точить эту шашку два года, когда есть готовая.


_>Ну вот на SO в начале использовали Linq, а потом выкинули его в помойку в пользу использования голых строк. Наверное там ничего не имеющие непрофессионалы сидят, да? ))) В отличие от многочисленных экспертов-теоретиков с нашего форума. )))


N>>>Питон — это потому, что мне легче на нём быстро формулировать. Мог быть любой другой язык.

_>·>Так собственно linq это и делает у себя внутрях по сути во время runtime, а alex_public говорил что это тормоза — используйте compile time.

_>Ничего подобного. Linq делает не это. Точнее не только это. В начале он анализирует (через тормозную рефлексию) выражение и генерирует из него код склейки и только потом запускает собственно этот код. Причём как раз этот анализ занимает во много раз больше времени, чем собственно склейка строк. И именно оттуда и идут тормоза.

О поподробнее пожалуйста. Там на самом деле деревья выражений Исследование скорости вызова метода различными способами
Кроме того запросы кэшируются если это возможно после первого вызова так как заранее не известен провайдер, так что основные затраты только на первый вызов.
Там где динамические запросы обычно время вызова значительно выше времени компиляции запроса. Не забывай, что на стороне сервера такие запросы могут быть не закэшированы из-за множества вариаций