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

Оптимизация. Перегрузки vs параметры по умолчанию - C++

Войти
Регистрация
Восстановить пароль
 
Defake
 Аватар для Defake
4 / 4 / 0
Регистрация: 24.08.2011
Сообщений: 187
25.06.2015, 18:56     Оптимизация. Перегрузки vs параметры по умолчанию #1
Вот я думаю, какой вариант реализации будет быстрее для выполнения программы.

Такой:
C++
1
2
3
4
5
void Show(double restTime = 0) {
    al_flip_display();
    if (restTime)
        al_rest(restTime);
}
Или такой:

C++
1
2
3
4
5
6
7
8
void Show() {
    al_flip_display();
}
 
void Show(double restTime) {
    Show();
    al_rest(restTime);
}
На такой маленькой функции, может, и не будет разницы. Но я сам подход имею в виду. В каком направлении будет увеличиваться оптимизация: в направлении увеличения перегрузок или параметров по умолчанию? Если по умолчанию, то будет больше блоков if в функции. Но для каждой перегрузки тоже ведь нужно будет обращаться по своему дополнительному адресу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2015, 18:56     Оптимизация. Перегрузки vs параметры по умолчанию
Посмотрите здесь:

Параметры функции по умолчанию C++
Параметры по умолчанию в С. C++
ODBC, параметры по умолчанию C++
C++ Указатель на функцию и параметры по умолчанию
C++ Параметры по умолчанию в функции
Перегрузки C++
C++ с++ перегрузки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,056
Записей в блоге: 10
Завершенные тесты: 1
25.06.2015, 21:49     Оптимизация. Перегрузки vs параметры по умолчанию #2
А что, если в варианте с перегрузкой передать параметр 0?

Добавлено через 6 минут
Я к тому, что пример не совсем корректный.
В варианте с перегрузкой при передаче параметра 0 в любом случае вызовется функция al_rest, в отличии от варианта с параметром по умолчанию.
Defake
 Аватар для Defake
4 / 4 / 0
Регистрация: 24.08.2011
Сообщений: 187
25.06.2015, 22:34  [ТС]     Оптимизация. Перегрузки vs параметры по умолчанию #3
Я не имел в виду данный пример, а просто продемонстрировал 2 способа. Какой из этих способов лучше для производительности?
Убежденный
Системный программист
 Аватар для Убежденный
14470 / 6454 / 1020
Регистрация: 02.05.2013
Сообщений: 10,686
Завершенные тесты: 1
25.06.2015, 22:46     Оптимизация. Перегрузки vs параметры по умолчанию #4
IMHO, компилятор сгенерирует эквивалентный код в обоих случаях.
Но может быть, во втором случае код будет чуточку быстрее из-за
отсутствия ветвлений (if).
hoggy
5605 / 2235 / 411
Регистрация: 15.11.2014
Сообщений: 5,027
Завершенные тесты: 1
26.06.2015, 00:54     Оптимизация. Перегрузки vs параметры по умолчанию #5
я бы сделал две разные функции для двух разных случаев.
ValeryS
Модератор
6413 / 4879 / 448
Регистрация: 14.02.2011
Сообщений: 16,180
26.06.2015, 01:09     Оптимизация. Перегрузки vs параметры по умолчанию #6
Цитата Сообщение от Defake Посмотреть сообщение
В каком направлении будет увеличиваться оптимизация:
оптимизация чего?
быстродействия или памяти?
чаще всего это антогонисты, чем меньше код тем он медленней работает, и наоборот
например
C++
1
2
for(int i=0;i<4;i++)
 arr[i]=i+1;
будет медленней, чем
C++
1
2
3
4
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
посему пишешь код, натравливаешь на него профилировшик и ищешь узкие места
иногда оптимизировать нафиг не нужно
например твоя функция занимает 1% от всей программы
ускорил ты её в 10 раз, много выиграешь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2015, 08:08     Оптимизация. Перегрузки vs параметры по умолчанию
Еще ссылки по теме:

Параметры шаблонов функции по умолчанию C++
C++ Перегрузки
C++ Перегрузки
C++ Параметры функции по умолчанию
C++ Параметры по-умолчанию в виртуальных функциях

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,056
Записей в блоге: 10
Завершенные тесты: 1
26.06.2015, 08:08     Оптимизация. Перегрузки vs параметры по умолчанию #7
Цитата Сообщение от Убежденный Посмотреть сообщение
Но может быть, во втором случае код будет чуточку быстрее из-за
отсутствия ветвлений (if).
Я сначала тоже так подумал. Потом увидел что во втором случае вызов функции al_rest будет происходить всегда, в отличии от первого случая. Что делает оба примера не идентичными.
Если закрыть на это глаза, тогда нужно определить что быстрее, условие или вызов функции, в которой не знай что творится.
Yandex
Объявления
26.06.2015, 08:08     Оптимизация. Перегрузки vs параметры по умолчанию
Ответ Создать тему
Опции темы

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