▣ 안녕하세요.
이번장에서는 인라인 함수를 공부해보겠습니다.
인라인 함수는 인라인 함수 호출 시 그 호출한 코드에 인라인 함수 코드 자체가 안으로 들어가는 함수를 의미합니다.
▣ 정리하면 짧은 코드를 함수로 만들면 함수 호출의 오버헤드가 커서 프로그램 실행 시간이 길어집니다.
오버헤드란 프로그램의 실행 흐름에서 나타나는 현상을 이야기하는데
쉽게 이야기하면 메인 함수로 프로그램을 실행 흐름 중에 다른 곳에 떨어진 위치의 함수 코드를 실행시켜야 할 때,
메모리와 시간을 드리게 됩니다. 그걸 오버헤드 현상이라고 합니다.
만약 우리가 짧은 함수를 호출할 때마다 스택 메모리를 할당하고 함수에 따라 여러 가지 연산을 하는 이 과정들로 하여금 많은 메모리와 시간을 들이게 되면 효과적이지 않고 속도가 저하됩니다.
그렇기 때문에 인라인 함수를 사용합니다.
함수를 호출될 때 일반적인 함수의 호출 과정을 거치지 않고, 함수의 모든 코드를 호출된 자리에 바로 삽입하는 방식으로 진행됩니다.
설명만 하면 이해하기 어려우니 코드를 작성하며 공부해보겠습니다.
▣ 인라인 함수를 사용하려면 함수 반환형보다 먼저 inline 키워드를 사용해야 합니다.
그럼 컴파일 과정에서 호출하는 함수 부분은 사라지고 바로 (10 + 10) 코드로 남게 됩니다.
다시 정리하면 sum = calculator(10); 코드가 sum = (10 + 10);로 바뀐다고 생각하시면 됩니다.
이런 짧은 함수를 호출될 때마다 처리해야 하는 작업이 상당히 많은데,
인라인 함수로 하여금 프로그램의 실행 속도가 빨라지게 됩니다.
▣ 반대로 단점도 있습니다.
메모리 사용 측면에서는 인라인 함수가 일반 함수보다 불리합니다. 위의 예제를 보시면 아시겠지만 인라인 함수는 호출한 부분이 몇 번이 되었듯 컴파일러는 인라인 함수의 호출한 부분에 계속해서 코드를 삽입해야 하기 때문에 그만큼 메모리의 낭비가 됩니다.
그래서 인라인 함수를 사용할 때에는 짧은 코드를 사용하는 게 좋습니다.
그리고 컴파일러에 따라 재귀 함수, static 변수, 반복문, switch문, goto문 등을 가진 인라인 함수로 허용하지 않습니다.
'[ C++ ] > - C++ 문법공부' 카테고리의 다른 글
C++ 9장 [메모리 할당] (0) | 2022.10.26 |
---|---|
C++ 8장 [포인터 객체] (0) | 2022.10.20 |
C++ 6장 [클래스4] (0) | 2022.10.12 |
C++ 5장 [클래스3] (0) | 2022.10.07 |
C++ 4장 [클래스2] (0) | 2022.10.06 |
댓글