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

Встраивание функций – оптимизация в компиляторах, выполняющая подстановку тела функции вместо ее вызова.

Пример на уровне кода

До оптимизации:

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

Для реализации процедуры необходимо:

  1. создать копию тела функции;

  2. выполнить подстановку аргументов функции внутрь скопированного тела;

  3. вставить тело функции на место ее вызова;

  4. запустить другие процедуры для оптимизации вставленных выражений.

Преимущества:

  • уменьшение накладных расходов на вызов и возврат из функции, и передачу параметров;

  • повышение эффективности кеширования кода, так как код становится последовательным;

  • размер кода уменьшается, если все подстановки вызова функции могут быть вычислены во время компиляции;

  • появляется возможность других оптимизаций.

Недостатки:

  • Размер кода увеличивается, если вызовов функции несколько, и функция имеет большой размер.

Назад