Форум программистов, компьютерный форум CyberForum.ru

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

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

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

16.12.2013, 22:06. Просмотров 590. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2013, 22:06     Использование inline функций
Посмотрите здесь:

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

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

Использование функций - C++
Всем доброго вечера Требуется помощь в решение задач по данной теме ибо я нахожусь в полном ступоре С точки зрения математики все...

Использование функций. - C++
Помогите пожалуйста решить задачи. 1. Составить программу для нахождения максимальных значений среди элементов линейных таблиц А и В....

Использование функций - C++
Очень нужна помощь. Помогите пожалуйста разобраться. Я уже не представляю что делать, подскажите пожалуйста. Во время запуска программы,...

Использование функций. - C++
1. Определить натуральное число не больше заданного n с наибольшей суммой делителей. Использовать функцию вычисления суммы делителей...

Использование функций - C++
Здравствуйте! Помогите начинающему, который изучает тему &quot;функции&quot;. Надо инициализировать массив и вывести его в консольное окно. Но в этом...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
16.12.2013, 22:20     Использование inline функций #2
А что значит не работает? Если время одинаковое (хотя замеров я не заметил), так это оттого, что циклы маленькие, смело ставь десяток миллионов на десяток миллионов. А так замерить можно:
C++
1
2
3
    ULONGLONG lastCall = GetTickCount64();
       //действие
       cout << GetTickCount64()-lastCall << endl; //прошло времени
Кликните здесь для просмотра всего текста
А вообще нечего в литературе такую элементарщину искать, лучше самому догадаться, иначе дальше будет бедаааа...
Sara1995
3 / 3 / 0
Регистрация: 03.10.2012
Сообщений: 66
16.12.2013, 22:33  [ТС]     Использование inline функций #3
Это понятно, но выдаются ошибки в коде, нужно исправить.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
16.12.2013, 22:35     Использование inline функций #4
со скобками фигурными вокруг функции main разберись
а точнее, с циклом фор на строке 23 убери точку с запятой
и разберись со скобками
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
16.12.2013, 22:42     Использование inline функций #5
А вообще ошибки покажите. Чего мы искать их тут будем, если можно просто лог дать...
Sara1995
3 / 3 / 0
Регистрация: 03.10.2012
Сообщений: 66
16.12.2013, 22:51  [ТС]     Использование inline функций #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;
}
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
17.12.2013, 14:29     Использование inline функций #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);
    }
}
Evg
Эксперт CАвтор FAQ
17528 / 5766 / 368
Регистрация: 30.03.2009
Сообщений: 15,854
Записей в блоге: 26
17.12.2013, 16:08     Использование inline функций #8
Цитата Сообщение от Sara1995 Посмотреть сообщение
С помощью системного таймера определить выигрыш во времени при использовании inline -функций
На всякий случай скажу сразу, что выигрыша никакого скорее всего не будет. Т.к. современные компиляторы настолько продвинутые, что им по большому счёту плевать, есть модификатор inline, или нет. Они (компиляторы) сами, никого не спрашивая, выполнят inline. Разницу, как правило, можно увидеть, используя компиляторы 20-25-летней давности, когда они ещё не были настолько умными
Sara1995
3 / 3 / 0
Регистрация: 03.10.2012
Сообщений: 66
17.12.2013, 22:02  [ТС]     Использование inline функций #9
monolit, Для добавления таймера наверное нужно какой-то заголовочный файл подключать, покажите в самом коде как должно выглядеть или хотя бы пример, я просто в первый раз сталкиваюсь с таким, в интернете искала теорию, но там совсем другое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 22:09     Использование inline функций
Еще ссылки по теме:

Использование функций - C++
Даны действительный числа a,b,c. Получить: (u+v2,3.14), где u=min(a,b), v=min(ab,a+b). Прошу любой помощи(будь то хороший сайт где я...

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

Использование функций - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; void drill(); int count; // count and num_right are global int...

Использование функций - C++
Даны три действительных числа x, y, z. Получить A= arccos((x^2+y^2-z^2)/(2xy)) - arccos(z^2*y/(x+z*y)) где arccos(a) = arctg...

Использование функций - C++
Хочу сделать так, чтобы функция maxnd вычисляла максимальное значение элементов квадратной матрицы, расположенных ниже главной диагонали ...


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

Или воспользуйтесь поиском по форуму:
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
17.12.2013, 22:09     Использование inline функций #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
Yandex
Объявления
17.12.2013, 22:09     Использование inline функций
Ответ Создать тему
Опции темы

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