135 / 20 / 2
Регистрация: 06.05.2019
Сообщений: 1,363
Записей в блоге: 3
1

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

18.02.2020, 21:23. Показов 488. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2020, 21:23
Ответы с готовыми решениями:

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

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

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

Ошибка при компиляции 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...

6
бах-бах и в продакшен!
3044 / 1651 / 573
Регистрация: 23.09.2014
Сообщений: 5,164
Записей в блоге: 4
19.02.2020, 01:11 2
Цитата Сообщение от 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
135 / 20 / 2
Регистрация: 06.05.2019
Сообщений: 1,363
Записей в блоге: 3
19.02.2020, 01:42  [ТС] 3
Значит функция у которой аргументов больше будет работать медленнее. Можно например написать универсальную функцию засунуть туда все аргументы и использовать то что нужно а можно создать структуру или пирамиду и вызывать функции по мере необходимости, отсюда вопрос имеет ли смысл так делать имеется в виду писать универсальные функции или всё же лучше каждую функцию загружать понемногу.
0
бах-бах и в продакшен!
3044 / 1651 / 573
Регистрация: 23.09.2014
Сообщений: 5,164
Записей в блоге: 4
19.02.2020, 01:56 4
Цитата Сообщение от Nexi99 Посмотреть сообщение
Можно например написать универсальную функцию засунуть туда все аргументы и использовать то что нужно а можно создать структуру или пирамиду и вызывать функции по мере необходимости
категорически нет!
Но

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

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

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

Не важно умный вы или глупый, вы всё равно будете делать это,
потому, что по другому решить сложную задачу у вас вряд ли получиться.
0
3105 / 1493 / 511
Регистрация: 29.11.2010
Сообщений: 3,015
19.02.2020, 07:41 5
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
135 / 20 / 2
Регистрация: 06.05.2019
Сообщений: 1,363
Записей в блоге: 3
19.02.2020, 10:03  [ТС] 6
Спасибо за ответы. Значит имеет смысл разбивать задачи на подзадачи и регулировать нагрузку.
0
бах-бах и в продакшен!
3044 / 1651 / 573
Регистрация: 23.09.2014
Сообщений: 5,164
Записей в блоге: 4
19.02.2020, 10:35 7
Цитата Сообщение от 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2020, 10:35

В каком случае надо начинать с 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...

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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