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

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

Войти
Регистрация
Восстановить пароль
 
Defake
4 / 4 / 0
Регистрация: 24.08.2011
Сообщений: 188
#1

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

25.06.2015, 18:56. Просмотров 325. Ответов 6
Метки нет (Все метки)

Вот я думаю, какой вариант реализации будет быстрее для выполнения программы.

Такой:
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++
Всем привет. Есть такой класс: template <typename T> class MyClass { public: MyClass(T *_beg, T *_en):beg(_beg),en(_en) {} ...

ODBC, параметры по умолчанию - C++
Доброго утра! Хочу на ПК програмно прописывать источники ODBC. Пример абстрактного, работающего кода. Это некий копи паст - так что не...

Параметры функции по умолчанию - C++
Приветствую всех! Уважаемые эксперты С++, подскажите, значения параметров по умолчанию должны задаваться в прототипе или в реализации...

Параметры функции по умолчанию - C++
Можно ли в качестве параметра по умолчанию указать элимент класса ? Хотелось бы сделать как то так char* SendMessage(char*...

Параметры по-умолчанию в виртуальных функциях - C++
Подскажите, это ведь UB ? #include <iostream> class Base { int a; public: Base() : a(1) {}

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

Добавлено через 6 минут
Я к тому, что пример не совсем корректный.
В варианте с перегрузкой при передаче параметра 0 в любом случае вызовется функция al_rest, в отличии от варианта с параметром по умолчанию.
Defake
4 / 4 / 0
Регистрация: 24.08.2011
Сообщений: 188
25.06.2015, 22:34  [ТС]     Оптимизация. Перегрузки vs параметры по умолчанию #3
Я не имел в виду данный пример, а просто продемонстрировал 2 способа. Какой из этих способов лучше для производительности?
Убежденный
Системный программист
Эксперт С++
15247 / 6879 / 1092
Регистрация: 02.05.2013
Сообщений: 11,255
Завершенные тесты: 1
25.06.2015, 22:46     Оптимизация. Перегрузки vs параметры по умолчанию #4
IMHO, компилятор сгенерирует эквивалентный код в обоих случаях.
Но может быть, во втором случае код будет чуточку быстрее из-за
отсутствия ветвлений (if).
hoggy
6369 / 2587 / 452
Регистрация: 15.11.2014
Сообщений: 5,722
Завершенные тесты: 1
26.06.2015, 00:54     Оптимизация. Перегрузки vs параметры по умолчанию #5
я бы сделал две разные функции для двух разных случаев.
ValeryS
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,653
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++
есть функция template&lt;class T&gt; T sum(valarray&lt;T&gt; x, size_t left = 0, size_t right = 0){ T result = 0; if(right == 0)...

Указатель на функцию и параметры по умолчанию - C++
Приветствую! Есть такая задача - мне нужно передавать в специальную функцию массив и указатель на функцию. Функции эти для сортировки, и...

Перегрузки - C++
Изменить программу предыдущей лабораторной работы. Функцию, определяющую бьет ли первая карта вторую, определить в базовом классе как...

с++ перегрузки - C++
Нужна помощь с реализацией кода(перегрузка добавления элемента в массив) Полная постановка задачи. АТД - множество с элементами типа...


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

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

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