Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
#1

адаптеры - C++

04.11.2011, 20:03. Просмотров 2138. Ответов 35
Метки нет (Все метки)

добрый вечер интересно ваше мнение.
такие вещи как адаптеры, биндеры позиционируются как шибко быстро работающие.
и рекомендуется ими активно пользоваться. Например вместо попыток определить собственную шаблон-функцию сравнения, которая сравнивает входное значение с неким фиксированным значением, рекомендуется юзать биндер, который сделает нам из функции less принимающей 2 параметра для сравнения, функтор принимающий одно значение. Все это делается через создание шаблонных структур ну или классов в которых один из параметров less становится членом, и имеется небезызвестный operator()() который и используют стандартные алгоритмы, когда мы даем на вход сий класс.
Так вот поделитесь мнением, действительно ли через биндеры это шибко быстрее, чем через просто функцию, на ваш взгляд? В процессе работы алгоритма ну например форич, при такой схеме во первых вызывается конструктор столько раз сколько элементов надо пройти, вызывается деструктор столько же раз, ну и вызывается сам operator()(). Это работает действительно быстрее, чем просто вызов какой либо своей функции? Как считаете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2011, 20:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос адаптеры (C++):

Функциональные адаптеры - C++
Для произвольного целочисленного массива данных написать функцию которая уменьшает все элементы в 2 раза с использованием функциональных...

Стандартные функторы-адаптеры - C++
Добрый вечер! Хочу отсортировать контейнер, заполненный указателями на объекты класса Class, критерий сортировки - метод этого класса. При...

Функторы, алгоритмы и адаптеры - C++
Нужна помощь! 1 Нужно создать multimap и multiset на основе элементов типа класса CPerson, содержащий в своем классе следующие...

Функторы, предикаты, функциональные адаптеры, лямбда-функции - C++
Вступление Статья ориентирована на программистов С++, поверхностно знающих/желающих узнать STL, в особенности, с использованием его...

Сетевые адаптеры! - Windows Server
Есть сервер DELL R320 под управлением Windows 2008 R2 Standart. Сняли с него образ. Имеется ещё один сервер DELL R610, RAID на нём создан с...

Адаптеры сети - Wi-Fi
Здравствуйте. Ноут asus n-series 76vb. После установки win10 начал барахлить wifi (самопроизвольно отключаться). А вчера совершенно...

35
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
05.11.2011, 23:36  [ТС] #31
Я немножко наврал. все деструкторы будут вызваны в конце. ровно по количеству созданных временных объектов.
На последней картиночке простой тест. найти значение меньше 7, работает справно выводит шастерку.
на первых трех картиночках показано что вызывается. И вызывается это столько раз, сколько нужно чтобы найти шестерочку. конструкторы не пометил - это и так очевидно.

Видимо это из за дебага такие шаги? И если будет собран релиз, то все будет оптимизировано...и?
в алгоритм в место вызова встроится код функтора из класса и все? ну или сам класс. так чтоли?
0
Миниатюры
адаптеры   адаптеры   адаптеры  

адаптеры  
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
05.11.2011, 23:47  [ТС] #32
не совсем понятно.
0
alex_x_x
05.11.2011, 23:55
  #33

Не по теме:

хороший вопрос, тут надо хорошо разбираться в компиляторной оптимизации, чтобы ответить по сущетсву, без общих слов

0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
06.11.2011, 14:13 #34
Цитата Сообщение от alex_x_x Посмотреть сообщение
при чем собственно указатель на функцию
При том, что функции-алгоритмы принимают указатель на функцию. Если идёт обращение к функции через указатель, то она не может быть встроенной по определению, потому как у inline функций нет адресов(это вообще не функции в привычном пониманиии этого слова). Если есть обращение через указетель, то есть и реальная функция(не встроенная). Хотя, Майерс в книге "Эффективное использовании STL" пишет, что в принципе такие оптимизации, о которых ты говоришь всё же возможны, но на практике такое встретить практически нереально. А вот operator() будет встроен гарантированно. Поэтому функторы использовать эффективнее(по крайней мере на большинстве компиляторов), о чём собственно и написанно у тех же Страуструпа, Майерса...
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
06.11.2011, 14:32 #35
не вижу чем встраивание оператора функционального объекта может быть проще встраивания тела функции - это не соответствует логике
без общих слов и ссылок на авторитетов
на моей машине gcc показывает обратный результат
0
LosAngeles
Заблокирован
06.11.2011, 14:41 #36
на хабре уже проверяли с O3 разницы нет между функциями и функторами
0
06.11.2011, 14:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2011, 14:41
Привет! Вот еще темы с ответами:

Сетевые адаптеры - Сетевое оборудование
В диспетчере появился какой-то левый сетевой адаптер. Кто знает что это такое?

Не работают сетевые адаптеры на пк - Сетевое оборудование
Доброго времени суток форумчане!:) Поставил ОС windows 7 на стационарник и после этого у меня пропала сеть, т.е. вылезла ошибка...

Не работают сетевые адаптеры - Windows 10
Обновился до Win 10 с Win 8.1. Сразу после обновления столкнулся с проблемой: не работают оба сетевых адаптера. В папке Центр...

Адаптеры WI-FI: дальнобойные и с вардрайвингом. - Сетевое оборудование
Какие из адаптеров под USB порекомендуете? Необходим адаптер способный сделать линк на 500-2000метров: 1.Возможность работать с...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru