Re[98]: Тормознутость и кривость linq
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 30.04.16 20:26
Оценка:
Здравствуйте, ·, Вы писали:

·>Нет, я свожу к абсурду твою точку зрения. Хотя ты опять сам справляешься лучше. Вот сейчас сказал, что PHP тормоза не оказывают ощутимое влияние в случае работы с СУБД, а linq рефлексия (которой как выяснилось нет) вдруг стала источником тормозов?


Уже месяц хочу от него пояснений, так что может еще один-другой месяц и выясним все секреты

_>>Ты похоже путаешь просто linq и linq2database. В первом случае у нас действительно исполняется само выражение. А во втором случае совсем другая схема — выражение используется по сути как набор данных (дерево) из которых генерируется sql текст.

·>Ок. Допустим. И причём тут рефлексия?
·>И чем принципиально этот набор данных отличается от такого if(categoryName) q.where.add(Category.name.like(*categoryName+"%"))?

Принципиально по выражениям выполняется компиляция запроса в SQL с оптимизациями, как говорит IT, на нескольких уровнях. От устранения лишних полей, до изменения структуры запросов.
alex_public утверждает, что
1 разница недопустимо велика (10-100% в замерах на синтетических вусмерть закешированых запросах)
2 весь оверхед чистая рефлексия

_>>Нет, дерево выражений строится на этапе компиляции. Но отдельные его элементы могут быть доступны для модификации. )

·>Как и в linq по сути. В чём отличие-то?

Он считает, что ручная оптимизация сборет любое linq-решение. То есть, все что надо, это склейка-на-стероидах, своего рода DSL на шаблонах С++, который выдаст качественный код склейки строк.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.