Страницы

Поиск по вопросам

суббота, 29 декабря 2018 г.

Кэширование лямбда-выражений C#

Столкнулся со следующим: Написав свою функцию кэширования значений лямбда-выражений(думал это ускорит работу программы на повторных прогонах со старыми входными данными), я приступил к тестированию, но заметил, что даже без использования моего кэширования программа на втором прогоне выражений затрачивает уже значительно меньше тиков процессора(примерно вдвое меньше). Т.е. есть подозрение, что кэширование для значений лямбда-выражений уже реализовано в C# по умолчанию, так ли это?


Ответ

Лямбда-выражение — не более чем хитро оформленный указатель на функцию, так что кешированием вы не добьётесь ощутимого выигрыша в производительности. Не пытайтесь ускорить программу, не проведя профилирование. По поводу второго прогона — думаю, вы столкнулись с JIT-компиляцией. Каждая функция (не только лямбда) при первом выполнении компилируется в нативный код. Каждое последующее выполнение уже не нуждается в компиляции, а значит, происходит значительно быстрее.

Комментариев нет:

Отправить комментарий