Google C++ Style Guide / Google C++ Style Guide: Inline Functions

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Встраиваемые функции

Dynorth 19.11.12 в 19:51

1

Определяйте функции, как встраиваемые, только когда они небольшие, не больше примерно 10 строк.

Dynorth 19.11.12 в 19:51

0

Определяйте как встраиваемые только небольшие функции, не более 10 строк.

mayorovp 20.11.12 в 05:37

1

Определение:

Dynorth 19.11.12 в 19:51

1

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

Dynorth 19.11.12 в 19:52

1

Плюсы:

Dynorth 19.11.12 в 19:52

1

Встраивание функции может сгенерировать более эффективный объектный код, если встраиваемая функция небольшая. Вы можете спокойно встраивать аксессоры, мутаторы, и другие короткие, критичные к производительности функции.

Dynorth 19.11.12 в 19:55

1

Минусы:

Dynorth 19.11.12 в 19:55

1

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

Dynorth 19.11.12 в 19:57

1

Решение:

Dynorth 19.11.12 в 19:57

0

Хорошим общим правилом будет не встраивание функции, если она занимает больше 10 строк. Аккуратнее с деструкторами, которые обычно длиннее, чем они кажутся из-за неявных вызовов членов и деструкторов базовых классов!

Dynorth 19.11.12 в 19:59

0

Хорошим правилом будет отказ от встраивания функции, если она занимает более 10 строк. Следует быть аккуратнее с деструкторами, которые зачастую длиннее., чем кажутся, из-за неявных вызовов деструкторов полей и базовых классов.

mayorovp 20.11.12 в 05:40

1

Другое полезное правило: обычно нецелесообразно встраивать функции с циклами или switch-операторами (если только в большинстве случаев цикл или switch-оператор не будет выполнен).

Dynorth 19.11.12 в 20:01

0

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

mayorovp 20.11.12 в 05:42

1

Важно знать, что функции не всегда встраиваются, даже если они так объявлены; например, виртуальные и рекурсивные функции обычно не встраиваются. Обычно, рекурсивные функции не должны быть встраиваемые. Главной причиной определения виртуальной функции, как встраиваемой, является её определение в классе, либо для удобства, либо для документирования её поведения, например, для аксессоров и мутаторов.

Dynorth 19.11.12 в 20:03

0
Минутку...