Size: a a a

2020 July 16

ст

серёжа тигр... in supapro.cxx
Что такое оверхед?
источник

ПК

Побитый Кирпич... in supapro.cxx
Aleksander Mironov
Хочу попробовать использовать лямбды в качестве локальных фунций в методе для улучшения читаемости.
Я пишу для встраиваемой системы.
У меня вопрос тут же возник, а какой они оверхед дадут?
Никакой по сравнению с функторами
источник

AM

Aleksander Mironov in supapro.cxx
Побитый Кирпич
Никакой по сравнению с функторами
Ок ушел гуглить что такое функтор =)
источник

ПК

Побитый Кирпич... in supapro.cxx
Aleksander Mironov
Ок ушел гуглить что такое функтор =)
функтор это FunctionObject в терминах С++, то есть класс с перегруженным оператором ()
источник

AM

Aleksander Mironov in supapro.cxx
Побитый Кирпич
функтор это FunctionObject в терминах С++, то есть класс с перегруженным оператором ()
Меня что запутало

Для продвинутых читателей: На самом деле, лямбды не являются функциями (что и помогает им избегать ограничений C++, которые накладываются на использование вложенных функций). 
Лямбды являются особым типом объектов, который называется функтором
. Функторы — это объекты, содержащие перегруженный operator(), который и делает их вызываемыми подобно обычным функциям.

> Какой оверхед у лямбды
> Никакой по сравнению с функторами
источник

ПК

Побитый Кирпич... in supapro.cxx
Aleksander Mironov
Меня что запутало

Для продвинутых читателей: На самом деле, лямбды не являются функциями (что и помогает им избегать ограничений C++, которые накладываются на использование вложенных функций). 
Лямбды являются особым типом объектов, который называется функтором
. Функторы — это объекты, содержащие перегруженный operator(), который и делает их вызываемыми подобно обычным функциям.

> Какой оверхед у лямбды
> Никакой по сравнению с функторами
Что именно непонятно?
источник

ПК

Побитый Кирпич... in supapro.cxx
функции и лямбды принадлежат к семейству FunctionObject, потому что у них есть оператор ()
источник

ПК

Побитый Кирпич... in supapro.cxx
вернее лямбда генерится в функтор (класс с оператором ()), который уже FunctionObject
источник

ПК

Побитый Кирпич... in supapro.cxx
Как то так, насколько я знаю это всё работает
источник

AM

Aleksander Mironov in supapro.cxx
Побитый Кирпич
Как то так, насколько я знаю это всё работает
Я все равно не понял.
Если лямбда является функтором, как она может иметь что то отличное от функтора.
источник

ПК

Побитый Кирпич... in supapro.cxx
Aleksander Mironov
Я все равно не понял.
Если лямбда является функтором, как она может иметь что то отличное от функтора.
Кто сказал, что может?
источник

AM

Aleksander Mironov in supapro.cxx
Побитый Кирпич
Никакой по сравнению с функторами
<
источник

ПК

Побитый Кирпич... in supapro.cxx
Тут если что говорится, что не имеет отличий
источник

ПК

Побитый Кирпич... in supapro.cxx
нет отличий => нет оверхеда
источник

AM

Aleksander Mironov in supapro.cxx
Эммм.  Ну ок, я всегда воспринимал "Никакой по сравнению с" несколько иначе..
источник

ПК

Побитый Кирпич... in supapro.cxx
Aleksander Mironov
Эммм.  Ну ок, я всегда воспринимал "Никакой по сравнению с" несколько иначе..
воспринимал, как "имеет отличия"? Это странно
источник

AM

Aleksander Mironov in supapro.cxx
Побитый Кирпич
воспринимал, как "имеет отличия"? Это странно
Отличия столь велики, что значение первого - никакое.
источник

AM

Aleksander Mironov in supapro.cxx
Какова скорость улитки?
Никакая по сравнению с скоростью света.
источник

z

zeroid in supapro.cxx
Aleksander Mironov
Я все равно не понял.
Если лямбда является функтором, как она может иметь что то отличное от функтора.
источник

ПК

Побитый Кирпич... in supapro.cxx
Aleksander Mironov
Какова скорость улитки?
Никакая по сравнению с скоростью света.
Я тебя понял, да. Я имел ввиду, что оверхед от замены функторов на лямбды = ~0
источник