Форум программистов, компьютерный форум 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 столбца. Условие: В матрице... http://www.cyberforum.ru/cpp-beginners/thread1164913.html
C++ Определить минимальное количество символов, которые нужно добавить в строку, чтобы получить палиндром
Здравствуйте, помогите пожалуйсто, был бы очень признателен хотя бы за идею решения(поидеи методом ветвей и границ она решается) Палиндром – строка, которая одинаково читается слева направо и...
Создать класс "Музей" - проверка кода на корректность C++
Проверьте пожалуйста верно ли я написал class музей, в который должны входить: Наименовани,Назначение,Адрес,Часы работы,Стоимость билета? Единственное не смог написать в функцию информация вывод...
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;...
C++ Определить площадь фигуры, образованной объединением прямоугольников Дано N прямоугольников со сторонами, параллельными осям координат. Требуется определить площадь фигуры, образованной объединением данных прямоугольников. Входные данные В первой строке входного... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17953 / 6184 / 413
Регистрация: 30.03.2009
Сообщений: 16,974
Записей в блоге: 27
03.05.2014, 19:18
Цитата Сообщение от 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'ить
4
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru