Re[6]: [Ann, c#7] local functions
От: Sinix  
Дата: 25.05.15 07:26
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:


EP>>>А почему для лямбд это трудно, а для local functions нет? В чём разница? Лямбды завязаны на какое-то ABI jit'а?

S>>Неа, потому что лямбды — это делегаты, их значение может меняться в рантайме.
EP>В каком смысле? Что это даёт по сравнению с локальными функциями?

void Do(Action a)
{
  a(); // вызываемый метод неизвестен при компиляции
}

Вперёд, оптимизируйте на здоровье

И не забыть про a.Target, a.BeginInvoke() etc.

Тут разве что .net native поможет, там всё как раз в один бинарник собирается. Но до оптимизации .net native руки дойдут ооочень не скоро. Как минимум не в следующем релизе.

S>>Локальные функции ничем не отличаются от вызова приватного метода, для них отдельных приседаний делать не надо.

EP>Насколько я понял по форме отличий мало, отличаются реализации. Что мешает для старой формы сделать быструю реализацию?
Возможнось передать лямбду в чужой код.

EP>Тут просто часто говорят что лямбды в C# медленные, постоянные аллокации и т.п. — по сути стоит выбор между удобством и скоростью — я вот и не понимаю почему их не оптимизировать в компиляторе, чтобы не было такой дилеммы там где её быть не должно.

Вы их больше слушайте. Чтобы уткнуться в лямбды — надо оччень сильно постараться, причём писать код не включая мозг там будет обязательным условием. Тынц
Автор: Sinix
Дата: 27.11.14


EP>А создание лямбды дорогое?

2.31*108 calls per sec. Хватит?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.