Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Sara1995
3 / 3 / 0
Регистрация: 03.10.2012
Сообщений: 66
#1

Использование inline функций - C++

16.12.2013, 22:06. Просмотров 625. Ответов 9
Метки нет (Все метки)

Нам задали написать программу по условию: Написать программу с использованием подставляемых функций и обычных функций, выполняющих одни и те же действия. С помощью системного таймера определить выигрыш во времени при использовании inline -функций.
Помогите пожалуйста доделать программу под условие.
В литературе нашли такой код, но не работает, видимо неверно написан:
C++
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
27
28
29
30
31
32
33
34
#include<stdio.h>
int maxo(int x, int y)
{
    return(x>y)?x:y;
}
inline int maxi(int x, int y)
{
    return(x>y)?x:y;
}
int main()
{
    int i,j=5000,k, loop; // Непосредственное вычисление 
    for(loop=0;loop<100;loop++)
    {
        for(i=0;i<10000;i++)
        {
            k=(i>j)?i:j;
        }
    }
    // Подставляемая функция 
    printf("Подставляемая функция\n\n"); for(loop=0;loop<100;loop++)
    {
        for(i=0;i<10000;i++);
        k=maxi(i,j);}
}
//Неподставляемая функция 
printf("Обычная функция\n\n"); for(loop=0;loop<100;loop++)
{
    for(i=0;i<10000;i++)
    {k=maxo(i,j);
    }
}
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2013, 22:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование inline функций (C++):

inline функции vs инструкции inline функций - C++
Здравствуйте. Чтобы не писать повторно код, нужно использовать функции. Но если функции компактные, то их лучше делать inline функциями, т....

Экспортирование inline-функций в MinGW компиляторе - C++
Здравствуйте. Как заставить MinGW компилятор (в моем случае MinGW 4.9.2 x32) экспортировать inline-функции и функции-члены классов в...

Схож ли по принципу механизм использования inline функций и макросов? - C++
сабж ясен из заголовка

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h - C++
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...

Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline? - C++
Здравствуйте. Знаю теорию, но не понимаю, на сколько должна быть маленькая функция, чтоб она подошла под inline ? Как...

9
monolit
186 / 185 / 22
Регистрация: 24.03.2011
Сообщений: 669
Завершенные тесты: 1
16.12.2013, 22:20 #2
А что значит не работает? Если время одинаковое (хотя замеров я не заметил), так это оттого, что циклы маленькие, смело ставь десяток миллионов на десяток миллионов. А так замерить можно:
C++
1
2
3
    ULONGLONG lastCall = GetTickCount64();
       //действие
       cout << GetTickCount64()-lastCall << endl; //прошло времени
Кликните здесь для просмотра всего текста
А вообще нечего в литературе такую элементарщину искать, лучше самому догадаться, иначе дальше будет бедаааа...
0
Sara1995
3 / 3 / 0
Регистрация: 03.10.2012
Сообщений: 66
16.12.2013, 22:33  [ТС] #3
Это понятно, но выдаются ошибки в коде, нужно исправить.
0
Kuzia domovenok
2052 / 1897 / 174
Регистрация: 25.03.2012
Сообщений: 6,520
Записей в блоге: 1
16.12.2013, 22:35 #4
со скобками фигурными вокруг функции main разберись
а точнее, с циклом фор на строке 23 убери точку с запятой
и разберись со скобками
0
monolit
186 / 185 / 22
Регистрация: 24.03.2011
Сообщений: 669
Завершенные тесты: 1
16.12.2013, 22:42 #5
А вообще ошибки покажите. Чего мы искать их тут будем, если можно просто лог дать...
0
Sara1995
3 / 3 / 0
Регистрация: 03.10.2012
Сообщений: 66
16.12.2013, 22:51  [ТС] #6
Вот отредактировала теперь запускается, только вот мне само условие непонятно, как программа должна работать и где таймер должен размещаться в коде.
C++
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
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
#include<stdio.h>
int maxo(int x, int y)
{
    return(x>y)?x:y;
}
inline int maxi(int x, int y)
{
    return(x>y)?x:y;
}
int main()
{
    int i,j=5000,k, loop; // Непосредственное вычисление 
    for(loop=0;loop<100;loop++)
    {
        for(i=0;i<10000;i++)
        {
            k=(i>j)?i:j;
        }
    }
    // Подставляемая функция 
    setlocale(LC_ALL, "Russian");
    printf("Подставляемая функция\n\n"); 
    {
    for(loop=0;loop<100;loop++)
    {
        for(i=0;i<10000;i++);
        k=maxi(i,j);}
}
//Неподставляемая функция 
printf("Обычная функция\n\n"); for(loop=0;loop<100;loop++)
{
    for(i=0;i<10000;i++)
    {k=maxo(i,j);
    }
}
system("pause");
return 0;
}
0
monolit
186 / 185 / 22
Регистрация: 24.03.2011
Сообщений: 669
Завершенные тесты: 1
17.12.2013, 14:29 #7
Как это где размещаться. Я ж конкретно написал:
Цитата Сообщение от monolit Посмотреть сообщение
ULONGLONG lastCall = GetTickCount64();
* * * *//действие
* * * *cout << GetTickCount64()-lastCall << endl; //прошло времени
Действие - то, что ты замеряешь. А ты замеряешь сколько времени потратится на циклы, вот циклы твои и подставляй - у тебя их три (не считая внутренних)

Добавлено через 2 минуты
А со скобками ты так и не разобралась, насколько я вижу...
Цитата Сообщение от Sara1995 Посмотреть сообщение
printf("Подставляемая функция\n\n");
* * {
* * for(loop=0;loop<100;loop++)
* * {
* * * * for(i=0;i<10000;i++);
* * * * k=maxi(i,j);}
}
Вообще чушь. Так надо:
C++
1
2
3
4
5
6
7
printf("Подставляемая функция\n\n"); 
for(loop=0;loop<100;loop++)
{
* * for(i=0;i<10000;i++) {
* * * * k=maxi(i,j);
    }
}
1
Evg
Эксперт CАвтор FAQ
18377 / 6424 / 441
Регистрация: 30.03.2009
Сообщений: 17,820
Записей в блоге: 28
17.12.2013, 16:08 #8
Цитата Сообщение от Sara1995 Посмотреть сообщение
С помощью системного таймера определить выигрыш во времени при использовании inline -функций
На всякий случай скажу сразу, что выигрыша никакого скорее всего не будет. Т.к. современные компиляторы настолько продвинутые, что им по большому счёту плевать, есть модификатор inline, или нет. Они (компиляторы) сами, никого не спрашивая, выполнят inline. Разницу, как правило, можно увидеть, используя компиляторы 20-25-летней давности, когда они ещё не были настолько умными
2
Sara1995
3 / 3 / 0
Регистрация: 03.10.2012
Сообщений: 66
17.12.2013, 22:02  [ТС] #9
monolit, Для добавления таймера наверное нужно какой-то заголовочный файл подключать, покажите в самом коде как должно выглядеть или хотя бы пример, я просто в первый раз сталкиваюсь с таким, в интернете искала теорию, но там совсем другое
0
monolit
186 / 185 / 22
Регистрация: 24.03.2011
Сообщений: 669
Завершенные тесты: 1
17.12.2013, 22:09 #10
C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>
 
/***************/
 
printf("Подставляемая функция\n\n"); 
ULONGLONG lastCall = GetTickCount64();
for(i=0; i<10000000; i++) {
    k=maxi(i,j);
}
cout << "Прошло " << GetTickCount64()-lastCall << "ms." << endl
1
17.12.2013, 22:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 22:09
Привет! Вот еще темы с ответами:

Работа с двумерными числовыми массивами. Использование указателей. Использование функций пользователя. - C++
Помогите пожалуйста!!!!!!! Сделать три варианта: первый вариант – передача данных между функциями с помощью глобального...

Использование функций и шаблонов функций - C++
Составьте программу – формирование цены на молоко. Животновод в начале каждой зимы цену на молоко на р%, а каждым летом снижает на столько...

Использование функций и шаблонов функций - C++
Люди помогите пожалуйста буду очень благодарна) вобщем вот первая часть лабы Написать программу, функция main которой включает...

C/C++ Использование функций, использование break - C++
Здравствуйте. Не знал как назвать тему, боялся что, если назову &quot;КАК ЭТО РАБОТАЕТ?&quot; то её удалят. Пишу программу для вычисления длинных...


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

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

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