![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
Читая книгу Джосьютиса "C++. Стандартная библиотека" русское издание от 2004 года столкнулся с мыслью от автора на стр.136 где он приводит преимущества использования объектов функций.
Мысль такая: "Шаблоны обычно лучше оптимизируются чем функции, поскольку на стадии компиляции доступно больше информации". На мой взгляд обычная ф-ция доступна в том же объеме компилятору насколько доступен объект функции. Вопросы: Почему автор так утверждает? Это действительно так? |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
Кажется нашел здесь такое пояснение:
Но насколько это отражает реальное положение дел? |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Функцию можно определить как inline, тогда компилятор тоже постарается её встроить.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
volatile,
Даже если поставить перед обычными функциями слово inline ? Добавлено через 21 секунду W4FhLF, Опередил ))) |
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Давненько это уже было... щас я покапался в своих архивах. Нашел таки. вот небольшой отрывок тех старых результатов
Римские цифры, это просто прогоны. us - микросекунды. остальное понятно. Конкретные цифры, как вы понимаете не важны, но общая тенденция - довольно наглядна
прочтите последнюю строчку. я ничего щас не менял. (да собственно какой мне интерес что-то менять?) Добавлено через 2 минуты и 29 секунд Да, возможно вы спросите почему инлайн ничего не меняет. Там компилировалось с макс. оптимизацией на скорость, в том числе: /Ob2 (inline = any suitable) Все результаты в общем и так инлайн. |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
volatile, ну так выложи и тестовый код для полной картины
Это сообщение отредактировал(а) Alca - 16.12.2012, 09:09 |
|||
|
||||
| volatile |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Вот, например одна из тестовых функций:
Здесь используется еще секундомер. (вот старая версия, использовавшаяся с этим кодом) stopwatch.h
так, что еще? myrnd - генератор случайных чисел, используйте любой, решающего значения не имеет. У меня такое ошущение, что я результаты здесь уже публиковал. (щас поищу) Добавлено через 3 минуты и 15 секунд да, результаты здесь уже постил |
||||
|
|||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Я думал здесь должен быть inline? /Ob2 ещё не даёт гарантии, что она инлайн. Плюс надо добавить const по аналогии с funcktor, т.к. это влияет на оптимизацию. Объективно, разницы между таким элементарным функтором и функцией быть недолжно. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
инт передается по значению, зачем конст? Добавлено через 1 минуту и 28 секунд и там тоже по значению. |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 2 Всего: 9 |
Кой-чего интересного нашел на rsdn.ru : Производительность компиляторов С++
|
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Я так думаю, надо смотреть ассемблерный код, чтобы понять, за счёт чего возникает такая разница... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
мне видится это разница так:
|
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |