* Inline 함수
- 함수는 Call할 때 수행시간이 추가로 드는 편입니다.
- 일반적인 함수의 수행 과정
1. 스택에 함수 매개변수, 호출이 끝난 후 돌아갈 주소, 함수의 지역변수 등이 저장된다.
2. 함수가 시작되는 메모리 주소로 점프하여 함수를 수행한다.
3. 리턴 값을 레지스터에 복사한 후, 저장해 둔 주소의 명령으로 돌아온다.
- Inline 함수의 수행 과정
1. 함수 코드가 함수 콜한 코드 안에 직접 삽입된다.
즉, 함수로 점프, 돌아오는 과정이 생략됩니다.
그렇다고 항상 Inline 함수가 유리한 것은 아닙니다.
이유는 다음과 같습니다.
1. Inline으로 생략되는 수행 시간이 크지 않다.
-> 빈번히 사용되는 함수가 아니면 큰 이득이 없음
2. 함수 코드가 길어서 메모리를 많이 사용하게 되는 경우
-> 코드 부분의 메모리가 길어짐
또한, 똑똑한 C++ 컴파일러는 Inline을 붙였다고 해서 반드시 Inline 함수로 만들어주지 않습니다.
컴파일러는 함수를 보고 스스로 Inline의 여부를 결정하기 때문에
__forceinline이나 __declspec(noinline)같은 키워드로 강제하지 않는 한,
inline 키워드는 함수 인라인 여부에 거의 영향을 미치지 않습니다.
>> Inline은 최근, ODR을 무시하라는 의도로 사용합니다. 자세한건 아래 링크를 참조!
씹어먹는 C++ - <20 - 2. 코드 부터 실행 파일 까지 - 컴파일 (Compile)> (modoocode.com)
'공부 및 정리 > C++' 카테고리의 다른 글
C++의 기초 - 7 (0) | 2022.12.20 |
---|---|
C++의 기초 - 6 (0) | 2022.12.12 |
C++의 기초 - 4 (0) | 2022.11.30 |
C++의 기초 - 3 (0) | 2022.07.12 |
C++의 기초 - 2 (0) | 2022.06.15 |