함수를 직접 복사해서 호출하지 않고, 함수의 기능만 복사해서 사용하는 함수
현재 나온 컴파일러의 경우 적절한 함수를 inline화 해서 쓰기에 요즘엔 사용하지 않는다.
int min(int x, int y)
{
return x > y ? y : x;
}
int main()
{
std::cout << min(5, 6) << '\n';
std::cout << min(3, 2) << '\n';
return 0;
}
위 프로그램은 함수min()을 두 번 호출하여 함수 호출 오버헤드 패널티를 두 번 발생시킨다.
min() 함수는 짦은 함수이므로 인라인화 하기 좋다.
inline int min(int x, int y)
{
return x > y ? y : x;
}
이제 프로그램이 main()을 컴파일하면 main() 다음과 같이 작성된 것처럼 기계 코드를 생성한다.int main()
{
std::cout << (5 > 6 ? 6 : 5) << '\n';
std::cout << (3 > 2 ? 2 : 3) << '\n';
return 0;
}
결과적으로 더 빠르게 실행된다.
코드를 부풀릴 가능성이 있으므로 함수를 인라인화 하는 것은 내부 루프가 없는 짧은 함수에 가장 적합하다.
그러나 요즘은 굳이 인라인 함수로 작성하지 않아도 컴파일러가 알아서 인라인 함수 화 시켜주기에 잘 쓰지 않는다고 한다.