Class GameDev* SheepAdult

[Unreal Engine 5] FORCEINLINE 본문

Unreal Engine

[Unreal Engine 5] FORCEINLINE

SheepAdult 2023. 8. 1. 16:12

FORCEINLINE은 함수를 강제적으로 inline화 시킨다. inline화란 컴파일 단계에서 컴파일러가 함수 호출 지점에 함수 내용을 갖다 붙이는 것을 말한다. 왜냐하면, 간단한 함수의 경우(한 줄짜리 getter, setter 등) 함수를 호출하는 데 발생하는 오버헤드가 함수 자리에 함수 내용이 작성되어 있는 것보다 효율성이 좋지 않을 수 있기 때문이다. 다시 말해, 함수를 호출하는 지점에서 함수로 이동하는 것보다, 그 자리에 함수 내용 코드를 써넣는 것이 효율성이 더 좋을 수 있다는 얘기이다.

 

이러한 경우 보통 inline을 사용한다. 하지만 inline의 경우, 컴파일러가 함수 내용이 복잡하다고 판단하면 inline처리 하지 않기도 하고, inline이 명시되어 있지 않더라도 inline화 하기도 한다. 그러나 FORCEINLINE은 강제적으로 inline화 한다는 점에서 inline과는 조금 다르며, 이러한 점 때문에 사용에 조금 조심할 필요는 있다. 참고로 class 내부에 함수를 정의하는 작업, 쉽게 말해 언리얼의 경우, 헤더파일에 함수를 정의하는 작업은 암시적으로 함수를 inline화 하는 작업이기 때문에 이점도 명시를 해야 한다.