인라인 함수란?
인라인 함수는 함수 호출을 하는 대신, 그 함수를 호출하는 코드에 함수의 본문을 직접 삽입하는 것을 의미합니다. 이렇게 하면 함수 호출에 따른 오버헤드(추가적인 비용)가 줄어들어 프로그램이 더 빠르게 실행될 수 있습니다.
레고 블록을 조립하는과정에 비유해보자
- 일반 함수: 마치 레고 블록을 조립할 때 매번 설명서를 꺼내서 다음 블록이 무엇인지 확인하고 조립하는 과정입니다. 설명서를 보는 데 시간이 걸립니다.
- 인라인 함수: 설명서의 내용을 머릿속에 외워서 매번 설명서를 보지 않고 바로 레고 블록을 조립하는 것과 같습니다. 설명서를 보는 시간이 없기 때문에 더 빨리 조립할 수 있습니다.
코드 예시로 이해하기
인라인 함수는 특히 게임 개발처럼 성능이 중요한 분야에서 많이 사용되며, FORCEINLINE은 언리얼엔진에서 이 과정을 강제로 수행하도록 하는 매크로입니다.
일반 함수
int Add(int a, int b) {
return a + b;
}
int main() {
int result = Add(3, 4); // Add 함수를 호출합니다.
return 0;
}
여기서는 Add 함수를 호출할 때마다 프로그램이 Add 함수로 이동한 후 결과를 가져옵니다. 이 과정에서 함수 호출에 따른 약간의 시간이 걸립니다.
인라인 함수
FORCEINLINE int Add(int a, int b) {
return a + b;
}
int main() {
int result = Add(3, 4); // Add 함수의 내용이 직접 여기에 삽입됩니다.
return 0;
}
여기서는 Add 함수가 인라인되어, 함수 호출 대신 Add 함수의 내용이 직접 main 함수 안에 삽입됩니다. 그래서 Add 함수로 이동하는 시간이 없어져 더 빠르게 실행됩니다.
주석과 함께 자세히 설명
// 인라인 함수를 사용하면 함수 호출 대신 함수의 내용을 직접 삽입합니다.
// 이렇게 하면 함수 호출에 따른 시간을 절약할 수 있습니다.
FORCEINLINE int Add(int a, int b) {
return a + b; // 이 함수는 두 숫자를 더한 값을 반환합니다.
}
int main() {
// result는 Add(3, 4)의 결과인 7이 됩니다.
// 여기서 Add 함수가 호출되는 대신, 아래와 같이 동작합니다:
// int result = 3 + 4;
int result = Add(3, 4); // Add 함수가 인라인되어 직접 삽입됩니다.
return 0;
}
이제 인라인 함수의 개념이 좀 더 이해되셨나요?
인라인 함수는 특히 게임 개발처럼 성능이 중요한 분야에서 많이 사용되며, Unreal Engine 5에서도 성능 최적화를 위해 이러한 인라인 함수를 적절히 사용하고 있습니다.
'개발이야기 > 언리얼 c++' 카테고리의 다른 글
언리얼 C++ : Ensure와 EnsureMsgf란? (0) | 2024.05.27 |
---|---|
언리얼 엔진의 델리게이트 기초와 심층분석 (0) | 2024.05.27 |
언리얼 C++: #define (0) | 2024.05.24 |
언리얼 C++ : typedef와 typedef struct는 왜 사용하는 걸까? (1) | 2024.05.24 |
언리얼C++: MINIMAL_WINDOWS_API란? (0) | 2024.05.24 |