Programming Language/C, C++

C++ 인라인 함수

MOLOKINI 2014. 10. 10. 13:42

인라인 함수 (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