인라인 함수 (inline function)
인라인 함수는 함수 호출 시 발생하는 오버헤드를 줄이기 위해 함수를 호출하는 대신 함수가 호출되는 곳마다 함수의 코드를 복사해 넣어주는 방법입니다.
- 인라인은 새로운 종류의 함수가 아니라 함수에 적용할 수 있는 새로운 특성입니다.
그럼 오버헤드는 뭘까요
실제로 함수가 호출되는 과정은 상당히 복잡합니다.
- 함수의 인자를 스택에 저장 -> 함수가 리턴될 때 돌아올 주소를 스택이나 레지스터에 저장 -> 함수의 시작 주소로 점프 -> 함수의 코드 실행 -> 함수에서 만들어진 지역변수, 스택에 저장된 인자 해제, 리턴값을 레지스터에 저장 -> 함수를 호출할 때 저장해둔 주소(다음에 수행할 문장의 위치)로 되돌아갑니다.
이렇듯 몇 개의 명령어로 구성된 간단한 함수를 호출하기 위해 함수의 호출 준비나 함수의 리턴을 위해 몇 십개의 명령어를 수행해야한다면 말 그대로 오버헤드가 될 수밖에 없습니다.
이런 오버헤드를 줄이기 위해 C++에서는 인라인 함수라는 기능을 제공합니다.
- 성능 향상을 위해 필요하겠죠?
인라인 함수가 가지는 일반 함수와의 가장 큰 차이는
함수 호출이 일어나는 것이 아니라 함수가 호출 되는 곳에 함수의 코드를 넣어준다는 점입니다.
결국, 인라인 함수는 위와 같다고 보시면 되겠습니다.
- Sum(a, b) -> a + b // 호출이 일어나지 않습니다!
'Programming Language > C, C++' 카테고리의 다른 글
C 헤더파일 중복검사 (0) | 2014.10.10 |
---|---|
C++ 네임스페이스 (0) | 2014.10.10 |
C 배열과 포인터 (0) | 2014.10.10 |
C 포인터 (0) | 2014.10.10 |
C 삼항연산자 (0) | 2014.10.09 |