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

Сообщение Re[149]: Тормознутость и кривость linq. Compile-time EDSL DB от 26.07.2016 8:39

Изменено 26.07.2016 8:47 Serginio1

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


_>Почему во время компиляции? )Это же динамический запрос и соответственно лямбда отрабатывает в рантайме, как и в примере с linq.


_>А что ты подразумеваешь под "некачественной" работой с деревьями выражений? )

А можно поподробнее. Сейчас изучаю C++. В Linq не совсем лябды. Там деревья выражений которые формируются в рантайме на их основе создаются лямбды и компилируются. https://habrahabr.ru/post/181065/

Комментарии поясняют что происходит. Сначала делается дерево выражений, в котором происходит обращение к сортируемому полю. Затем из дерева выражений создается лямбда. Далее конструируется метод сортировки, способный принять лямбду. И, в конце концов, этот метод динамически запускается на выполнение.


При этом статические (неизменяемые ET) могут кэшироваться.
Re[149]: Тормознутость и кривость linq. Compile-time EDSL DB
Здравствуйте, alex_public, Вы писали:


_>Почему во время компиляции? )Это же динамический запрос и соответственно лямбда отрабатывает в рантайме, как и в примере с linq.


_>А что ты подразумеваешь под "некачественной" работой с деревьями выражений? )

А можно поподробнее. Сейчас изучаю C++. В Linq не совсем лябды. Там деревья выражений которые формируются в рантайме на их основе создаются лямбды и компилируются. https://habrahabr.ru/post/181065/

Комментарии поясняют что происходит. Сначала делается дерево выражений, в котором происходит обращение к сортируемому полю. Затем из дерева выражений создается лямбда. Далее конструируется метод сортировки, способный принять лямбду. И, в конце концов, этот метод динамически запускается на выполнение.


При этом статические (неизменяемые ET) могут кэшироваться.

Вот пример модификации деревьев выражений
https://msdn.microsoft.com/ru-ru/library/bb546136(v=vs.90).aspx

Можно аналог на С++