Форум программистов, компьютерный форум, киберфорум С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для Defake
5 / 5 / 0
Регистрация: 24.08.2011
Сообщений: 191

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

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

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

Такой:
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 в функции. Но для каждой перегрузки тоже ведь нужно будет обращаться по своему дополнительному адресу.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.06.2015, 18:56
Ответы с готовыми решениями:

Параметры функции: параметры по умолчанию
помогите пожалуйста понять. void foo(int a, int b, int c=1){std::cout << a << "\t" << b << "\t" << c << '\t';} int main(){ ...

Параметры по умолчанию в С.
Всем привет! Захотел воспользоватся параметрами по умолчанию в си-шном проекте. И получил следующие ошибки: Действительно данный...

Параметры конструктора по умолчанию
Привет! Подскажите, что я делаю не так. Создал класс Monstr, как в книжке написано, вот исходники: Monstr.h: #pragma once ref...

6
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
25.06.2015, 21:49
А что, если в варианте с перегрузкой передать параметр 0?

Добавлено через 6 минут
Я к тому, что пример не совсем корректный.
В варианте с перегрузкой при передаче параметра 0 в любом случае вызовется функция al_rest, в отличии от варианта с параметром по умолчанию.
0
 Аватар для Defake
5 / 5 / 0
Регистрация: 24.08.2011
Сообщений: 191
25.06.2015, 22:34  [ТС]
Я не имел в виду данный пример, а просто продемонстрировал 2 способа. Какой из этих способов лучше для производительности?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
25.06.2015, 22:46
IMHO, компилятор сгенерирует эквивалентный код в обоих случаях.
Но может быть, во втором случае код будет чуточку быстрее из-за
отсутствия ветвлений (if).
1
Эксперт С++
 Аватар для hoggy
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
26.06.2015, 00:54
я бы сделал две разные функции для двух разных случаев.
0
Модератор
Эксперт по электронике
8960 / 6726 / 921
Регистрация: 14.02.2011
Сообщений: 23,742
26.06.2015, 01:09
Цитата Сообщение от 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 раз, много выиграешь?
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
26.06.2015, 08:08
Цитата Сообщение от Убежденный Посмотреть сообщение
Но может быть, во втором случае код будет чуточку быстрее из-за
отсутствия ветвлений (if).
Я сначала тоже так подумал. Потом увидел что во втором случае вызов функции al_rest будет происходить всегда, в отличии от первого случая. Что делает оба примера не идентичными.
Если закрыть на это глаза, тогда нужно определить что быстрее, условие или вызов функции, в которой не знай что творится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.06.2015, 08:08
Помогаю со студенческими работами здесь

Параметры функции по умолчанию
Как вывести значение первой переменной по умолчанию? Есть что-то типо такого: if ( ! function_exists('curr_change')) { function...

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

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

параметры процедуры по умолчанию
есть процедура procedure MyProc(a : integer = -1); begin b := a ; // b - глобальная переменная end; вызываю - MyProc и...

Параметры по умолчанию в функции
Всем привет. Есть такой класс: template &lt;typename T&gt; class MyClass { public: MyClass(T *_beg, T *_en):beg(_beg),en(_en) {} ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Сложность Колмогорова: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
Состояние гонки в C#: подводные камни многопоточного программировани­я
UnmanagedCoder 20.03.2025
Что такое состояние гонки? Это ситуация, когда результат программы непредсказуемо меняется в зависимости от порядка выполнения потоков. Проще говоря, два или более потока пытаются одновременно. . .
Next.js для разработки React: преимущества серверного рендеринга
Reangularity 20.03.2025
Next. js решает классическую проблему React-приложений: медленную первоначальную загрузку и плохую индексацию поисковиками. Вместо того чтобы заставлять браузер пользователя выполнять всю работу по. . .
JUnit или TestNG: Выбираем Java-фреймворк для тестирования
Javaican 20.03.2025
История тестовых фреймворков в Java началась в конце 90-х, когда Кент Бек и Эрих Гамма разработали JUnit - инструмент, который перевернул представление разработчиков о модульном тестировании. JUnit. . .
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
Python и PDF: Создание и редактирование файлов
py-thonny 20.03.2025
Работа с PDF-документами – одна из популярных задач в современной разработке. Python предлагает несколько инструментов для создания, чтения и редактирования PDF-файлов, среди которых особенно. . .
Корутины в Unity и производительно­сть WaitForSeconds
GameUnited 20.03.2025
Разработчики игр на Unity часто сталкиваются с вопросом: как выполнять действия через определённые промежутки времени, не блокируя основной поток игры? Тут как раз и приходят на помощь корутины —. . .
Криптография в PHP
Jason-Webb 20.03.2025
PHP предоставляет много криптографических возможностей: от встроенных функций хеширования до полноценных библиотек шифрования — арсенал средств довольно обширен. Но всё это бесполезно без понимания. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер