Программирование на C и C++

Онлайн справочник программиста на C и C++

Эффективность

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

Имеется две причины, по которым inline-код быстрее вызова функции. Первая заключается в том, что инструкция «вызвать» забирает некоторое время на выполнение. Вторая заключается в том, что передаваемые аргументы помещаются в стек, что тоже требует некоторого времени. Для большинства приложении это несущественное увеличение времени выполнения не имеет значения. Но если время критично, следует помнить, что каждый вызов функции использует время процессора, которое может быть сэкономлено с использованием inline-кода. Ниже показаны две версии программы, выводящей квадраты чисел от 1 до 10. inline-версия работает быстрее, чем обычная, поскольку отсутствует обращение к функции.

inline-код Вызов функции
#include <stdio.h>
int main(void)
{
int x;
for(x=1; x<11; ++x)
printf("%d", x*x);
return 0;
}
#include <stdio.h>
int sqr(int a);
int main(void)
{
int x;
for(x=1; x<11; ++x) printf("%d", sqr (x));
return 0;
}

int sqr(int a)
{
return a*a;
}

При создании программ всегда следует прикидывать «цену» использования функций с точки зрения времени выполнения, читабельности и способности к модификации.

ЗАМЕТКА: В С++ концепция inline-функций расширена и формализована фактически Inline функции являются важным компонентом С++.