Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,829
Записей в блоге: 4

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?

18.02.2020, 21:23. Показов 1734. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int Funkz(int a) int Funkz(int a, int b, int w), и дальше программа откомпилирована, какая функция сработает быстрее, первая учитывая то что у неё один аргумент или это не имеет значения т.к. программа уже собрана и происходит то что описано в теле, или всё таки маленькое влияние есть ведь аргументы функции представляют собой стэк на который резервируется память? Какие функции вызываются быстрее простые или перегруженные?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2020, 21:23
Ответы с готовыми решениями:

Не работает перегрузка индексного оператора [], вместо [int][int] почему то нужно ставить [0][int][int]
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<ctime> #include<conio.h> #include<windows.h> ...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

[C++ Error] Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int'
Всем привет! Пожалуйста , помогите , почему выдает ошибку Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int' ?. Мне нужно...

6
Just Do It!
 Аватар для XLAT
4202 / 2659 / 654
Регистрация: 23.09.2014
Сообщений: 8,980
Записей в блоге: 3
19.02.2020, 01:11
Цитата Сообщение от Nexi99 Посмотреть сообщение
Какие функции вызываются быстрее простые или перегруженные?
весь вопрос в том как вы будете их вызывать.

Выбор делаете именно вы, а не компилятор!
C++
1
2
3
4
5
6
7
8
9
10
11
int Q(int w)
{...
}
int Q(int y,int u,int i) 
{...
}
 
...
int n = Q(2020);   /// Вызов Раз
...
int m = Q(2020, 2, 19); /// Вызов Два
Догадайтесь сами что вызовится на Раз и на Два.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,829
Записей в блоге: 4
19.02.2020, 01:42  [ТС]
Значит функция у которой аргументов больше будет работать медленнее. Можно например написать универсальную функцию засунуть туда все аргументы и использовать то что нужно а можно создать структуру или пирамиду и вызывать функции по мере необходимости, отсюда вопрос имеет ли смысл так делать имеется в виду писать универсальные функции или всё же лучше каждую функцию загружать понемногу.
0
Just Do It!
 Аватар для XLAT
4202 / 2659 / 654
Регистрация: 23.09.2014
Сообщений: 8,980
Записей в блоге: 3
19.02.2020, 01:56
Цитата Сообщение от Nexi99 Посмотреть сообщение
Можно например написать универсальную функцию засунуть туда все аргументы и использовать то что нужно а можно создать структуру или пирамиду и вызывать функции по мере необходимости
категорически нет!
Но

функция int main(); получается самая универсальная функция в программе.

Дело в том что вы должны сосредотачиваться на самой задаче и думать в терминах задачи.
Далее в процессе вы выясните, что задачу можно разбить на подзадачи,
Подзадачи ещё на подзадачи и тд.. пока вы не "упрётесь" в минимальные функции, ну,
типа как сложить два числа и вернуть результат.

Так вот если у вас есть такая задача, сложность которой надо управлять
для того чтобы её решить, то вы непременно будете её дробить на некое иерархическое дерево функций.

Не важно умный вы или глупый, вы всё равно будете делать это,
потому, что по другому решить сложную задачу у вас вряд ли получиться.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
19.02.2020, 07:41
C++
1
2
3
4
5
6
7
8
9
10
11
12
void foo(int x) {
}
 
void foo(int x, int y) {
}
 
 
int main() 
{
    foo(1);
    foo(1, 2);
}
Превращается в:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
foo(int):
        push    rbp
        mov     rbp, rsp
        mov     DWORD PTR [rbp-4], edi
        nop
        pop     rbp
        ret
foo(int, int):
        push    rbp
        mov     rbp, rsp
        mov     DWORD PTR [rbp-4], edi
        mov     DWORD PTR [rbp-8], esi
        nop
        pop     rbp
        ret
main:
        push    rbp
        mov     rbp, rsp
        mov     edi, 1
        call    foo(int)
        mov     esi, 2
        mov     edi, 1
        call    foo(int, int)
        mov     eax, 0
        pop     rbp
        ret
Как видите, чтобы вызвать функцию с одним параметром нужно меньше операций, чем вызов функции с двумя параметрами.

Добавлено через 4 минуты
Цитата Сообщение от Nexi99 Посмотреть сообщение
Какие функции вызываются быстрее простые или перегруженные?
Перегруженные функции это просто термин для двух разных функций с одинаковым именем. Не имеет смысла в скомпилированной программе.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,829
Записей в блоге: 4
19.02.2020, 10:03  [ТС]
Спасибо за ответы. Значит имеет смысл разбивать задачи на подзадачи и регулировать нагрузку.
0
Just Do It!
 Аватар для XLAT
4202 / 2659 / 654
Регистрация: 23.09.2014
Сообщений: 8,980
Записей в блоге: 3
19.02.2020, 10:35
Цитата Сообщение от Nexi99 Посмотреть сообщение
Значит имеет смысл разбивать задачи на подзадачи и регулировать нагрузку.
это фундаментально и даже от языка не зависит.

следующий фундаментальный момент в программировании это понятие структуры данных.
В современном программировании структуры данных выходят как бы вперёд и
в каком то смысле(данные превичнее) поглощают функции.

примерно это может выглядеть так:
C++
1
2
3
4
5
6
7
8
9
struct myData
{   
    int W()
    {   y = u + i; /// Какие то манипуляции с данными
        return y;
    }
private:
    int y,u,i;
};
Это происходит от того
что к вашим каким-либо данным
нельзя применить функции не предназначенные для работы с ними.

Мой совет: копайте в этом направлении
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2020, 10:35
Помогаю со студенческими работами здесь

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.?
Не понимаю, с чего начинать. Заранее спс.

Что означает ошибка too few arguments to function ‘int my_func(int, int)’ (язык C++)?
В чём проблема? #include &lt;iostream&gt; int my_func (int i, int j){ int z; z=i+j; return z; } int main(){ ...

Ошибка ожидаемый инициализатор перед int (int) int main ()
Здравствуйте Я новичок в C++ и недавно столкнулся с такой ошибкой при передачи массива в функцию error: expected initializer...

int main() и int _tmain(int argc, _TCHAR* argv[])
При создании нового консольного приложения Microsoft Visual С++ 2010 Express создает начальный шаблон #include &quot;stdafx.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru