![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
mes, интересно... а что будет если туда написать lambda function?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Даже с:
http://liveworkspace.org/code/1M9JFU$0 |
||||
|
|||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Вообще-то, то что вызовы разные, у меня и не вызывало никогда сомнений.
Да хотя бы потому что Функтор - это _thiscall, Функция - это _cdecl Можно конечно смотреть асемблерный код, и выщитывать такты. Но это уже чисто академический интерес. А в то время для меня вопрос звучал примерно так: Вызов функции и функтора - безусловно разные вызовы, и нужно выяснить какой из них быстрее, чтобы использовать на приктике ответ на это вопрос я получил (чем кстати и поделился). |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
только вот фокус в том, что используя в функторе ту самую функцию, выполняться сортировка будет быстрей, нежели с переданной функцией Добавлено через 7 минут и 35 секунд лямбда по идеи более легка к оптимизации, и без захвата, представляет собой наипростейший вариант, без проблем конвертируемый в обычную функцию.. Добавлено через 9 минут и 10 секунд
сорри, я подумал, что все ж также интересно в чем лежит эта разница, чтоб можно было не бездумно, а аргументировано применять на приктике Это сообщение отредактировал(а) mes - 17.12.2012, 18:58 |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Надо разобрать асм код, делов то
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
ждём пока на LWS появится такая возможность. boostcoder обещал
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
mes, , это называется инкапсуляция. всмысле, не забивать голову всякой ерундой. (пусть над этим думают разработчики компиляторов. это их приватная часть.) Да, в конце концов, там не такая уж принципиальная разница. Так ли уж важны эти проценты? |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
В действительности, общее объяснение и понимание более ценны, нежели частные субъективные тесты. Обычно, конечно, всё начинается с тестов, но то, что докопались до сути -- хорошо.
Это сообщение отредактировал(а) W4FhLF - 17.12.2012, 23:54 -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не забивать ее можно по разному.. можно проведя тесты придти к выводу, что функция - зло, и везде использовать функторы. а можно разобраться, что дело не в функции, а в способе е передачи, и спокойно, не забивая голову тестами и предрасудками, использовать и тех и других подходящим образом.. |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
mes, отличная идея. Когда меня спросили по поводу этой разницы я сразу отверг её, т.к. забыл о разнице в передаче. Поэтому слова Джосьюттиса и Майерса являются верными для своего времени. Но это не совсем верно для современности, где компиляторы могут встроить подобную конструкцию. Никто не мешает встроить алгоритм STL после чего пропадет всякое взятие адреса и функция может быть встроена.
Поэтому получается, что в общем случае функторы могут быть быстрее, но это далеко не обязательно. Использование шаблонных функций вполне может быть встроено, так же как и функтор. Не знаю, может быть это влияние перевода, но, по факту, в издании 2012 года он менее категоричен:
Это сообщение отредактировал(а) vinter - 19.12.2012, 14:12 |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
Справедливости ради стоит привести и слова Джосьютиса из русского издания:
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |