Когда мне следует написать ключевое слово «inline» для функции / метода? - PullRequest
494 голосов
/ 19 ноября 2009

Когда мне следует написать ключевое слово inline для функции / метода в C ++?

Увидев некоторые ответы, некоторые связанные вопросы:

  • Когда я должен не написать ключевое слово 'inline' для функции / метода в C ++?

  • Когда компилятор не будет знать, когда сделать функцию / метод «встроенным»?

  • Имеет ли значение, если приложение является многопоточным , когда пишется «inline» для функции / метода?

Ответы [ 13 ]

0 голосов
/ 19 ноября 2009

Когда нужно встроить:

1. Когда нужно избежать издержек, возникающих при вызове функции, такой как передача параметров, передача управления, возврат управления и т. Д.

2.Функция должна быть небольшой, часто вызываться, и сделать ее встроенной действительно выгодно, поскольку в соответствии с правилом 80-20 постарайтесь сделать эту функцию встроенной, что существенно влияет на производительность программы.

Поскольку мы знаем, что inline - это просто запрос к компилятору, похожий на регистр, и он будет стоить вам при размере кода объекта.

0 голосов
/ 19 ноября 2009

При разработке и отладке кода не указывайте inline. Это усложняет отладку.

Основная причина их добавления состоит в том, чтобы помочь оптимизировать сгенерированный код. Обычно это заменяет увеличенное пространство кода на скорость, но иногда inline экономит пространство кода и время выполнения.

Если подумать об оптимизации производительности до завершения алгоритма, то это будет преждевременная оптимизация .

0 голосов
/ 19 ноября 2009

Вы хотите поставить его в самом начале, перед типом возврата. Но большинство компиляторов игнорируют это. Если он определен и имеет меньший блок кода, большинство компиляторов все равно считают его встроенным.

...