본문 바로가기
개발/C, C++

[C/C++] inline 함수

by 77monkey 개발자 2024. 5. 2.
반응형

 

 

 

 

 

 

 

지난 시간에 함수에 대해서 배웠습니다. 이번에는 inline 함수에 대해서 배워보도록 하겠습니다. inline 함수라는 이름에서 알 수 있듯이 함수를 in + line 하겠다는 느낌이 오지 않으신가요? 그럼 inline 함수에 대해서 알아보도록 하겠습니다. 

 

inline 함수

inline 함수는 함수 호출의 오버헤드를 줄이기 위해 컴파일러에 의해 해당 함수의 코드를 호출하는 곳에 직접 삽입되는 함수입니다. 호출되는 함수의 코드가 복사되어서 함수를 호출하는 곳으로 복사가 된다고 생각하시면 됩니다. 이렇게 되면 함수를 호출하기 위해서 시스템 내부적으로 동작되는 부분이 사라지고 바로 코드가 실행되기 때문에 실행 속도가 향상됩니다. 

 

inline 함수 예시

지난 포스팅에서 선언한 예시를 가져왔습니다. 다른 점이 하나 있는데, 바로 "inline"이라는 키워드가 함수 정의 앞에 붙었다는 것입니다. 이를 통해서 int result = add(7, 4); 코드에서 add(7, 4)로 인해서 add 함수가 호출되지 않고, 컴파일러에 의해서 해당 코드가 복사되어 add(7, 4) 대신에 붙여 넣어집니다. 

해당 코드의 result는 기존과 동일하게 result에 11이 들어가게 됩니다. 

inline int add(int arg1, int arg2) {
	int sum = arg1 + arg2;
	return sum;
}

int main() {
	int result = add(7, 4);

	return 0;
}

 

inline 함수의 장단점

inline 함수를 처음 알게 되면 함수 앞에 무조건 inline을 넣어서 속도를 향상하면 되지 않을까 싶습니다. 하지만 무조건적인 속도 향상이 이루어지지 않습니다. 항상 동전의 양면이 있듯이 장단점이 있습니다. 

 

장점

  • 함수 호출의 오버헤드를 줄여 코드 실행 속도를 향상합니다. 
  • 작은 함수의 경우 코드를 복사하여 호출되는 곳에 직접 삽입하기 때문에 함수 호출로 인한 스택 프레임 생성 및 해체 비용을 줄일 수 있습니다. 

단점

  • 함수가 너무 길거나 복잡할 경우 코드 크기를 증가시키고 캐시 효율을 감소시킬 수 있습니다.
  • inline 함수가 너무 많이 사용될 경우 컴파일된 코드 크기가 증가하여 메모리 사용량이 증가할 수 있습니다. 

마무리

inline을 적재적소에 작성하게 되면 성능 향상을 기대할 수 있지만, 무분별한 사용은 성능 저하를 야기할 수 있습니다. 개인적으로는 inline을 사용하는 것보다 사용하지 않고 코드를 잘 작성하는 것이 우선된다고 생각됩니다. inline 함수가 무엇인지에 대해서만 알고 있어도 충분할 것으로 보입니다. 

 

 

 

 

 

 

 

 

 

 

반응형

'개발 > C, C++' 카테고리의 다른 글

[C/C++] printf 함수의 모든 것  (0) 2024.05.15
[C/C++] 포인터(Pointer) 개념  (0) 2024.05.13
[C/C++] 함수(function)  (0) 2024.05.02
[C/C++] 연산자 우선순위  (0) 2023.09.18
[C/C++] 캐스팅 연산자  (1) 2023.09.17