|
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 13
|
||||||
Какова польза лямбда выражений17.03.2014, 13:05. Показов 4524. Ответов 31
Метки нет (Все метки)
Вот набросал пример который показывает что лямбда выражения медленней простых циклов и больше кода, в чем тогда их польза ?
0
|
||||||
| 17.03.2014, 13:05 | |
|
Ответы с готовыми решениями:
31
Использование лямбда-выражений в STL Поддержка лямбда-выражений Дебаггинг анонимных методов и лямбда-выражений |
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 17.03.2014, 13:25 | ||
|
Фраза
Сами по себе лямбда выражения - это синтаксический сахар для функторов. В С++ до этого не существовало способа сделать анонимный функтор, теперь такой способ есть, + некоторые плюшки (вроде захвата переменных). То, что ты там в своем примере заюзал стандартные алгоритмы с таким функтором и получил просадку производительности по сравнению с голым циклом, вообще никак лямбды не характеризует. Характеризует только то, что тест некорректный.
1
|
||
|
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 13
|
|
| 17.03.2014, 13:33 [ТС] | |
|
в чем не корректность теста ?
И что тогда лучше использовать в местах с простыми циклами, лямбда или циклы(итераторы) ? Еще так к месту, конструкторы перемещения дают очень небольшой прирост производительности (в 1,04873245 раза). Использовал самые простые конструкции, может быть лямбда можно как-то лучше приготовить ?
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||||
| 17.03.2014, 13:40 | ||||
|
И еще раз скажу, лямбды - это функторы (то есть функциональные объекты, то есть объекты, которые ведут себя как функции). Ее совсем не обязательно в цикл пихать.
0
|
||||
|
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 13
|
|
| 17.03.2014, 13:41 [ТС] | |
|
А цикл быстрее лямбда быстрее в 1,240681149 раза (видимо за счет создания временной структуры в каждой итерации).
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 17.03.2014, 13:43 | ||
|
1
|
||
|
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 13
|
|||
| 17.03.2014, 13:54 [ТС] | |||
|
Добавлено через 5 минут
0
|
|||
|
Неэпический
|
|||||||
| 17.03.2014, 14:02 | |||||||
1
|
|||||||
|
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 13
|
|
| 17.03.2014, 14:21 [ТС] | |
|
В моем примере оптимизация компилятора почти что уравнивает по скорости конструктор копирования и перемещения при возврате результата, по этому разница в скорости различима только для циклов и лямбда.
Вывод в консоль такой (gcc 4.7.3): copy: 182104 copy lambda: 225933 move: 173642 move lambda: 222386
0
|
|
|
Неэпический
|
||||||
| 17.03.2014, 14:55 | ||||||
|
Чуть поменял, чтобы не было автоматических переменных в некоторых местах, которые будут не копироваться, а перемещаться
![]()
1
|
||||||
|
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 13
|
|||||||
| 17.03.2014, 15:50 [ТС] | |||||||
|
в общем разъяснил ситуацию лямбда, результат прямо противоположный
:
data pushback lambda: 53000 lambda back_inserter: 194452 for counter: 220521 data modify lambda: 10275 for iterator: 61350 for counter: 120558 Добавлено через 6 минут
0
|
|||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 17.03.2014, 15:54 | |
|
volodja-, в одном случае для вектора сразу сделан resize, в другом - вставка back_inserter'ом, и, как следствие, перевыделения памяти и копирования объектов. В общем, я не понимаю что вы пытаетесь измерить.
0
|
|
|
Неэпический
|
||||
| 17.03.2014, 16:04 | ||||
|
0
|
||||
|
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 13
|
|
| 17.03.2014, 16:05 [ТС] | |
|
Согласен, пункт lambda: 53000 можно отбросить, не нашел пока способа вызывать push_back из лямбда. Но пункты в data modify выглядят достоверно.
0
|
|
|
Неэпический
|
|||||||
| 17.03.2014, 16:09 | |||||||
0
|
|||||||
| 17.03.2014, 16:09 | |
|
Помогаю со студенческими работами здесь
20
Переопределить метод ToString() на основе лямбда-выражений В чем разница лямбда-выражений и анонимных методов? Программа с использованием делегатов, анонимных методов и лямбда-выражений Реализовать с применением функционалов и лямбда-выражений следующую функцию Реализовать заданные функции при помощи лямбда-выражений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|