반응형
C++에서 인라인 함수(inline function)는 함수 호출 시 발생하는 오버헤드를 줄이기 위해 사용하는 기법입니다. 함수 호출이 반복되면 호출에 대한 오버헤드(스택 메모리 할당, 매개변수 전달 등)가 성능 저하를 일으킬 수 있는데, 인라인 함수는 이를 방지하고자 함수 호출을 함수 코드로 대체하여 성능을 개선할 수 있습니다.
1. 인라인 함수란?
인라인 함수는 함수 호출을 컴파일러가 함수 호출 부분에 해당 함수의 코드를 삽입(바디를 복사)하는 방식입니다. 컴파일 타임에 수행되며, 호출을 직접적으로 생략해 효율을 높입니다. 함수 호출 비용이 사라지므로 빠른 성능이 요구되는 곳에 적합합니다.
2. 인라인 함수 선언 방법
inline 키워드를 함수 정의 앞에 추가하여 선언합니다.
inline int add(int a, int b) { return a + b; } |
위 예제에서 add 함수는 인라인 함수로 컴파일러가 함수 호출을 코드로 대체할 수 있습니다.
3. 인라인 함수의 장점
- 함수 호출 오버헤드 감소: 함수 호출이 코드로 대체되므로 호출에 따르는 오버헤드가 제거됩니다.
- 짧은 함수에 유리: 짧고 자주 호출되는 함수일수록 성능 이점이 큽니다.
- 코드 최적화: 코드 크기와 성능의 균형을 맞추기 위해 컴파일러가 최적화를 시도합니다.
4. 인라인 함수의 단점
- 코드 크기 증가: 함수 호출을 대체해 함수 코드가 여러 곳에 삽입되면 실행 파일의 크기가 커질 수 있습니다.
- 복잡한 함수에는 부적합: 복잡한 함수는 인라인 처리 시 이점이 적거나 오히려 성능 저하를 초래할 수 있습니다. 함수 바디가 큰 경우 인라인화하지 않는 것이 좋습니다.
- 재귀 함수와 인라인 함수: 재귀 함수는 인라인으로 만들 수 없습니다. 재귀 호출 자체가 인라인 대체에 부적합하기 때문입니다.
5. 컴파일러의 역할
inline 키워드를 붙였다고 해서 반드시 인라인 처리가 되는 것은 아닙니다. 인라인 처리는 컴파일러가 결정하며, 최적화 전략에 따라 인라인 처리를 하지 않을 수도 있습니다.
6. 사용 시 주의사항
- 자주 호출되지만 간단한 함수에 인라인을 사용하면 성능 이점이 있지만, 코드가 길거나 자주 변경되는 함수는 인라인을 사용하지 않는 것이 좋습니다.
- 클래스 내부에 정의된 멤버 함수는 암묵적으로 인라인 함수로 처리됩니다.
7. 예시
#include <iostream>
using namespace std;
inline int square(int x) {
return x * x;
}
int main() {
cout << "Square of 5: " << square(5) << endl;
return 0;
}
(Output)
Square of 5: 25
반응형
'C_C++' 카테고리의 다른 글
c++, 정적 멤버 변수와 정적 함수 static member variables and static functions (0) | 2024.11.02 |
---|---|
C++, 생성자 오버로딩 개요 Constructor Overloading Overview (0) | 2024.10.25 |
C++, 클래스 기초: 자동차 클래스를 상속한 전기차 (0) | 2024.10.20 |
C++, 공용체 (union) 개요 (0) | 2024.10.17 |
(C++) 열거형 enum (0) | 2024.10.13 |