Встраивание функций
Встраивание функций – оптимизация в компиляторах, выполняющая подстановку тела функции вместо ее вызова.
Пример на уровне кода
До оптимизации:
def inlineFunction(x: int, y: int) -> int:
return x + y + 1
def main() -> None:
y: int = 1
x: int = inlineFunction(y, y + 1)
После оптимизации:
def inlineFunction(x: int, y: int) -> int:
return x + y + 1
def main() -> None:
y: int = 1
x: int = 4
Для реализации процедуры необходимо:
создать копию тела функции;
выполнить подстановку аргументов функции внутрь скопированного тела;
вставить тело функции на место ее вызова;
запустить другие процедуры для оптимизации вставленных выражений.
Преимущества:
уменьшение накладных расходов на вызов и возврат из функции, и передачу параметров;
повышение эффективности кеширования кода, так как код становится последовательным;
размер кода уменьшается, если все подстановки вызова функции могут быть вычислены во время компиляции;
появляется возможность других оптимизаций.
Недостатки:
Размер кода увеличивается, если вызовов функции несколько, и функция имеет большой размер.