Форум программистов, компьютерный форум CyberForum.ru

Накладные расходы при создании лямбды - C++

Восстановить пароль Регистрация
 
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
21.06.2014, 20:41     Накладные расходы при создании лямбды #1
Имеет смысл создавать лямбда функцию таким образом:
C++
1
static const auto lam = [](){  /* много строк */  };
Получается так она разместится в read only памяти и не будет каждый раз создаватся при её вызове? ( здесь имею ввиду лямбда функции, которые создаются внутри функции, а не которые передаются вызываемой функции в виде предиката)

Или они считаются обычными функциями и компилятор/линковщик уже сам оставляет единственный экземпляр лямбды у себя где-нибудь в сегменте инструкций, а не данных?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2014, 20:41     Накладные расходы при создании лямбды
Посмотрите здесь:

C++ Ошибки при создании .dll
Лямбды C++
C++ Захват const переменной из лямбды: разный результат в g++ и clang
C++ Лямбды в списке инициализации членов
C++ Допускается ли такое использование лямбды
Можно ли писать вложенные лямбды? (с++11) C++
Конструктор при создании через [] C++
C++ Тело лямбды. Двумерный массив

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.06.2014, 21:01     Накладные расходы при создании лямбды #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от gromo Посмотреть сообщение
и не будет каждый раз создаватся при её вызове?
Что Вы под этим понимаете? Можно подумать при вызове лямбды без static имени происходит чуть ли не компиляция на лету в процессе выполнения кода. Лямбы - это всего лишь синтаксический сахар для создания неименованных функций, т.е. в итоге просто используется обычный указатель на функцию (но она в любом случае расположена в сегменте кода). Без каких-либо дополнительных существенных расходов со стороны производительности.
Yandex
Объявления
21.06.2014, 21:01     Накладные расходы при создании лямбды
Ответ Создать тему
Опции темы

Текущее время: 05:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru