Как ускорять динамический код при помощи Expression Trees?

  • Видео
  • О видео
  • Скачать
  • Поделиться

Как ускорять динамический код при помощи Expression Trees?

#DevJungles #dotnet #expressions Telegram канал Dev Jungles - https://t.me/DevJungles Поддержать канал можно: - Подписавшись на Patreon: patreon.com/user?u=79336362 - Спонсорством на YouTube - Переводом на карту или пополнением банки монобанка: Dev Jungles YouTube Channel Fund https://send.monobank.ua/jar/7iAP3sZkm9 Номер карты банки: 5375 4112 0230 1466 - Или криптой: BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy ETH - 0x2903f63ba9009732272e91a299053b9d7b623216 USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216 USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2 DOGE - DPwon439jf3axVSBwyuXso6z7CivuJF655 AAVE - 0x2903f63ba9009732272e91a299053b9d7b623216 Waves - 3P8D57Zw7CrqW2o7dHpvZR2UzAzQRFA2kZd Полный стрим: https://youtube.com/live/T7ogOUPeFhI Если никогда не слышали про Expresion Trees, то зачем они вам могут понадобится: - Строить динамические фильтры на основе данных пользователя - Где-то ускорять рефлексию, если она стала узким местом - Выстраивать потрясающие API, что реализуют Open-Closed принцип из SOLID настолько, насколько это вообще возможно. Когда программе на вход подают программу и что-то выдают на выход, это называется метапрогрммирование. В целом, иногда даже наоборот: программе скармливают данные, аргументы и параметры и на выход она отдает программу. Таким образом первой метапрограммой с которой сталкивается любой разраб будет компилятор. Ну или интерпретатор, если вы из Этих. Затем могут следовать различные scaffold программы и простенькие кодогенераторы вроде того что генерирует вам DbContext из БД на удаленном сервере. C# довольно богат инструментами метапрограммирования. У нас как минимум есть: - Продвинутая рефлексия - Деревья выражений (aka Expression Trees) - Динамическая компиляция - Reflection.Emit - Roslyn Compiler Platform, что открывает нам путь к своим анализаторам и генераторам кода(Source Generators and Source Analyzers) Думаю на этом канале со временем сформируется целый отдельный плейлист с подробным разбором каждой из этих тем с прмерами и трюками. Мне есть что рассказать на эту тему и мне интересно копать ее дальше. Но с чего-то нужно начинать. Я долго откладывал эту тему опасаясь, что не раскрою ее достойно за один раз. Что бы перестать боятся решил начать с чего-то небольшого, а потом на это навешивать многие уровни. Тайм-коды: 00:00 - Тизер 01:42 - Пример написание Expression 16:37 - Запуск бенчмарков для сравнения Expression Trees и рефлексии 22:41 - Анализ результатов бенчмарка 24:55 - Закешировали рефлексию и перезапустили бенчмарк 28:54 - Анализ результатов бенчмарка 29:20 - проблема дублирования кода 35:12 - Кеширование лямбды 38:17 - Андрей нас обманул
5, 780   |   1 год. назад  |   162 - 0
 

Как ускорять динамический код при помощи Expression Trees?

Скачайте изображение (превью) выбрав качество


320x180 480x360 640x480 1280x720

#DevJungles #dotnet #expressions

Telegram канал Dev Jungles -

Поддержать канал можно:
- Подписавшись на Patreon: patreon.com/user?u=79336362
- Спонсорством на YouTube
- Переводом на карту или пополнением банки монобанка:
Dev Jungles YouTube Channel Fund


Номер карты банки:
5375 4112 0230 1466

- Или криптой:
BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy
ETH - 0x2903f63ba9009732272e91a299053b9d7b623216

USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T

LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2

DOGE - DPwon439jf3axVSBwyuXso6z7CivuJF655
AAVE - 0x2903f63ba9009732272e91a299053b9d7b623216
Waves - 3P8D57Zw7CrqW2o7dHpvZR2UzAzQRFA2kZd


Полный стрим:

Если никогда не слышали про Expresion Trees, то зачем они вам могут понадобится:
- Строить динамические фильтры на основе данных пользователя
- Где-то ускорять рефлексию, если она стала узким местом
- Выстраивать потрясающие API, что реализуют Open-Closed принцип из SOLID настолько, насколько это вообще возможно.

Когда программе на вход подают программу и что-то выдают на выход, это называется метапрогрммирование. В целом, иногда даже наоборот: программе скармливают данные, аргументы и параметры и на выход она отдает программу.

Таким образом первой метапрограммой с которой сталкивается любой разраб будет компилятор. Ну или интерпретатор, если вы из Этих. Затем могут следовать различные scaffold программы и простенькие кодогенераторы вроде того что генерирует вам DbContext из БД на удаленном сервере.

C# довольно богат инструментами метапрограммирования. У нас как минимум есть:
- Продвинутая рефлексия
- Деревья выражений (aka Expression Trees)
- Динамическая компиляция
- Reflection.Emit
- Roslyn Compiler Platform, что открывает нам путь к своим анализаторам и генераторам кода(Source Generators and Source Analyzers)

Думаю на этом канале со временем сформируется целый отдельный плейлист с подробным разбором каждой из этих тем с прмерами и трюками. Мне есть что рассказать на эту тему и мне интересно копать ее дальше.

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


Тайм-коды:
00:00 - Тизер
01:42 - Пример написание Expression
16:37 - Запуск бенчмарков для сравнения Expression Trees и рефлексии
22:41 - Анализ результатов бенчмарка
24:55 - Закешировали рефлексию и перезапустили бенчмарк
28:54 - Анализ результатов бенчмарка
29:20 - проблема дублирования кода
35:12 - Кеширование лямбды
38:17 - Андрей нас обманул


Как ускорять динамический код при помощи Expression Trees?

Чтобы скачать видео "Как ускорять динамический код при помощи Expression Trees?" передвинте ползунок вправо



Покажите вашим друзьям, добавьте в соцсети

Ссылка на страницу с видео:

 

Ссылка HTML на страницу с видео:

 

Код для вставки плеера:


  • Комментарии

Комментарии ФБ


Уважаемые друзья!

Источником всего видеоконтента, в том числе проигрывающегося на страницах ресурса ruslar.me, является сторонний видео ресурс, а именно общедоступный видеохостинг YouTube.com, предоставляющий открытый доступ к своему видеоконтенту (используя открытую и общедоступную технологию video API3 youtube.com)!

Проблемы с авторскими правами

Если вам принадлежат авторские права на данное видео, которое было загружено без вашего согласия на YouTube.com, перейдите на страницу этого видео сайта YouTube.com , нажмите на ссылку под проигрывателем Ещё -> "Пожаловаться" -> "Нарушение моих прав" и в выпадающем меню, выбирите, что именно нарушается и нажмите кнопку "Отправить".



Неприемлемый контент

Чтобы сообщить о неприемлемом видео, перейдите на YouTube, нажмите на ссылку под проигрывателем Ещё -> "Пожаловаться" и выберите в "Сообщить о нарушении" что именно вас не устраивает в этом видео. Подробнее о наших правилах читайте в Условиях использования.