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

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

18.02.2020, 21:23. Показов 1754. Ответов 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
4208 / 2665 / 655
Регистрация: 23.09.2014
Сообщений: 9,075
Записей в блоге: 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,835
Записей в блоге: 4
19.02.2020, 01:42  [ТС]
Значит функция у которой аргументов больше будет работать медленнее. Можно например написать универсальную функцию засунуть туда все аргументы и использовать то что нужно а можно создать структуру или пирамиду и вызывать функции по мере необходимости, отсюда вопрос имеет ли смысл так делать имеется в виду писать универсальные функции или всё же лучше каждую функцию загружать понемногу.
0
Just Do It!
 Аватар для XLAT
4208 / 2665 / 655
Регистрация: 23.09.2014
Сообщений: 9,075
Записей в блоге: 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,835
Записей в блоге: 4
19.02.2020, 10:03  [ТС]
Спасибо за ответы. Значит имеет смысл разбивать задачи на подзадачи и регулировать нагрузку.
0
Just Do It!
 Аватар для XLAT
4208 / 2665 / 655
Регистрация: 23.09.2014
Сообщений: 9,075
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru