Effective C++, 인라인 함수

|

인라인 함수

클래스 정의 내부에서 정의된 age는 암시적인 인라인 요청이다.

class Person {
public:
    int age() const { return theAge; }
private:
    int theAge;
}

메모리가 제한된 컴퓨터에서는 인라인 코드를 남발했다가 프로그램 크기가 그 기계에서 쓸 수 있는 공감을 넘어버릴 수도 있다. 페이징 횟수가 늘어나고, 명령어 캐시 적중률이 떨어질 가능성도 높아진다.

하지만 반대의 경우도 있다. 본문 길이가 짧은 인라인 함수를 사용하면, 함수 본문에 대해 만들어지는 코드의 크기가 함수 호출문에 대해 만들어지는 코드보다 작아질 수도 있다. 목적 코드의 크기도 작아지며 명령어 캐시 적중율도 높아진다.

함수 인라인은 작고, 자주 호출되는 함수에 대해서만 해야 한다. 이러면 디버깅 및 라이브러리의 바이너리 업그레이드가 용이해지고, 자칫 생길 수 있는 코드 부풀림 현상이 최소화되며, 프로그램의 속력이 더 빨라질 수 있는 여지가 많아진다.