Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 1
Регистрация: 03.10.2012
Сообщений: 66

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

16.12.2013, 22:06. Показов 1208. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2013, 22:06
Ответы с готовыми решениями:

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

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

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

9
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
16.12.2013, 22:20
А что значит не работает? Если время одинаковое (хотя замеров я не заметил), так это оттого, что циклы маленькие, смело ставь десяток миллионов на десяток миллионов. А так замерить можно:
C++
1
2
3
    ULONGLONG lastCall = GetTickCount64();
       //действие
       cout << GetTickCount64()-lastCall << endl; //прошло времени
Кликните здесь для просмотра всего текста
А вообще нечего в литературе такую элементарщину искать, лучше самому догадаться, иначе дальше будет бедаааа...
0
3 / 3 / 1
Регистрация: 03.10.2012
Сообщений: 66
16.12.2013, 22:33  [ТС]
Это понятно, но выдаются ошибки в коде, нужно исправить.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
16.12.2013, 22:35
со скобками фигурными вокруг функции main разберись
а точнее, с циклом фор на строке 23 убери точку с запятой
и разберись со скобками
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
16.12.2013, 22:42
А вообще ошибки покажите. Чего мы искать их тут будем, если можно просто лог дать...
0
3 / 3 / 1
Регистрация: 03.10.2012
Сообщений: 66
16.12.2013, 22:51  [ТС]
Вот отредактировала теперь запускается, только вот мне само условие непонятно, как программа должна работать и где таймер должен размещаться в коде.
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
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
17.12.2013, 14:29
Как это где размещаться. Я ж конкретно написал:
Цитата Сообщение от 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
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
17.12.2013, 16:08
Цитата Сообщение от Sara1995 Посмотреть сообщение
С помощью системного таймера определить выигрыш во времени при использовании inline -функций
На всякий случай скажу сразу, что выигрыша никакого скорее всего не будет. Т.к. современные компиляторы настолько продвинутые, что им по большому счёту плевать, есть модификатор inline, или нет. Они (компиляторы) сами, никого не спрашивая, выполнят inline. Разницу, как правило, можно увидеть, используя компиляторы 20-25-летней давности, когда они ещё не были настолько умными
2
3 / 3 / 1
Регистрация: 03.10.2012
Сообщений: 66
17.12.2013, 22:02  [ТС]
monolit, Для добавления таймера наверное нужно какой-то заголовочный файл подключать, покажите в самом коде как должно выглядеть или хотя бы пример, я просто в первый раз сталкиваюсь с таким, в интернете искала теорию, но там совсем другое
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
17.12.2013, 22:09
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.12.2013, 22:09
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru