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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Extern на Контейнер Vector своего класса http://www.cyberforum.ru/cpp-beginners/thread1164918.html
Здравствуйте. Как сделать extern на std::vector<CMyClass> vMyClass; ?
C++ В матрице действительных чисел вычислить сумму их наибольших значений в строках и наименьших в столбцах Не правильно находит минимальные числа в столбцах. Я задал матрицу разпером 3х4 , во-первых выводятся не те числа со столбцов, во-вторых выводятся всего 3 числа, хотя 4 столбца. Условие: В матрице действительных чисел вычислить сумму их наибольших значений в строках и наименьших в столбцах. Код: #include <vcl.h> #pragma hdrstop #include <iostream.h> #define n 3 #define m 4 http://www.cyberforum.ru/cpp-beginners/thread1164913.html
C++ Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром
Здравствуйте, помогите пожалуйсто, был бы очень признателен хотя бы за идею решения(поидеи методом ветвей и границ она решается) Палиндром – строка, которая одинаково читается слева направо и справа налево. Требуется по заданной строке определить минимальное количество символов, которые необходимо вставить в строку для преобразования ее в палиндром.
Создать класс "Музей" - проверка кода на корректность C++
Проверьте пожалуйста верно ли я написал class музей, в который должны входить: Наименовани,Назначение,Адрес,Часы работы,Стоимость билета? Единственное не смог написать в функцию информация вывод стоимости билета и назначение. Проверьте и исправьте если можно... #include <iostream> #include <string> #include <conio.h> using namespace std; class museum { private: string name; ...
C++ Найти и вывести на экран, у кого из кандидатов наименьший рейтинг http://www.cyberforum.ru/cpp-beginners/thread1164895.html
вот задача на языке С + +о выборах, нужно найти и вывести на экран у кого з кандидатів найменший рейтинг? #include<iostream.h> #include<stdlib.h> int vuboru; int vyborec; int S=0; int k,n; int main()
C++ Определить площадь фигуры, образованной объединением прямоугольников Дано N прямоугольников со сторонами, параллельными осям координат. Требуется определить площадь фигуры, образованной объединением данных прямоугольников. Входные данные В первой строке входного файла INPUT.TXT находится число прямоугольников - N. Затем идут N строк, содержащих по 4 числа: x1, y1, x2, y2 - координаты двух противоположных углов прямоугольника. Все координаты – целые числа, не... подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16843 / 5264 / 323
Регистрация: 30.03.2009
Сообщений: 14,159
Записей в блоге: 26
03.05.2014, 19:18     Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
Цитата Сообщение от pEntity Посмотреть сообщение
Знаю теорию, но не понимаю, на сколько должна быть маленькая функция, чтоб она подошла под inline ?
Это очень сильно зависит от компилятора, настроек компилятора и целевого процессора, под который работает компилятор

Цитата Сообщение от Игорюня Посмотреть сообщение
Думаю,что на современных машинах даже большое количество inline функций будут работать не быстрее,чем невстраиваемые.
Одна из классических ошибок. Долго объяснять не буду, просто приведу пример:

C
int foo (int x, int y)
{
  if (x < 0 && y < 0)
    return x / y;
  else if (x < 0 && y >= 0)
    return x * y;
  else if (x >=0 && y < 0)
    return x + y;
  else
    return x - y
}
 
int bar (void)
{
  return foo (10, 20);
}
Без inline при исполнении функции bar будет выполнено много операций. С inline'ом функция превратится просто в "return -10;"

После того, как компилятор выполнит inline, появляется возможность вычистить мёртвый код, свернуть константные выражения (именно под эти две штуки заточено очень много реализаций inline-Методов в контейнерах Си++). После inline у компилятора появится масса возможностей по перестановке операций с целью как можно плотнее заполнить конвейеры современных суперскалярных процессоров, которые умеют выполнять несколько операций одновременно, и будут делать это очень эффективно, если компилятор обеспечит правильную последовательность операций

Любая операция вызова - это облом для многих оптимизаций компилятора, т.к. вызов - это чёрный ящик, который неизвестно что делает, а inline помогает превратить чёрный ящик в белый

Добавлено через 1 минуту
Ну и полезная ссылка http://www.cyberforum.ru/blogs/18334/blog93.html
В Си++ на ключевое слово inline навешивается дополнительная функциональность, помимо простого указания компилятору, что надо бы про'inline'ить
 
Текущее время: 05:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru