[C++] 인라인 함수 (Inline Function)
# Language/C++

[C++] 인라인 함수 (Inline Function)




인라인 함수란, 


짧은 코드로 구성된 함수에 대해, 함수 호출 오버헤드로 인한 프로그램의 실행 속도 저하를 막기 위해 C++에서 도입된 방법






함수 오버헤드(overhead)




짧은 코드를 함수로 만들었을 때, 함수 호출의 오버헤드가 커서 프로그램 실행 시간이 길어짐.







해결책



inline 키워드를 이용


1
2
3
inline int odd(int x){
    return (x%2);
}
cs



함수를 인라인 함수로 선언했을 때 컴파일러는 인라인 함수를 호출하는 곳에 인라인 함수의 코드를 단순 삽입




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
inline int odd(int x){
    return (x%2);    
}
 
int main(void){
    
    int sum = 0;
    
    for(int i=1; i<= 10000; i++){
        if(odd(i)){
            sum+=i;
        }
    }
    
    cout << sum;
    
    return 0;    
}
 
cs
      


인라인 함수가 삽입 됐을 때


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
inline int odd(int x){
    return (x%2);    
}
 
int main(void){
    
    int sum = 0;
    
    for(int i=1; i<= 10000; i++){
        if((i%2)){
            sum+=i;
        }
    }
    
    cout << sum;
    
    return 0;    
}
 
cs







#장단점


작은 함수를 인라인으로 선언하면 C++ 프로그램의 실행 속도를 향상, 호출하는 곳이 여러 군데 있으면 그 만큼 전체 크기가 늘어나는 단점.


가능한 작은 함수를 인라인으로 선언하는 것이 현명.



C++에서 멤버 함수의 크기가 작을 경우 클래스의 선언부에 직접 구현하여도 무방함


-> getter(), setter() 메소드가 inline 선언 없이도 자동 인라인 함수로 처리 됨

728x90

'# Language > C++' 카테고리의 다른 글

[C++] 객체 포인터  (0) 2019.01.04
[C++] 문자열 (C-string, string)  (0) 2019.01.01
[C++] const의 개념  (0) 2018.12.21
[C++] namespace 와 std  (0) 2018.12.21
[C++] 이것저것 코드들  (0) 2018.12.21
[C++] 바람직한 C++ 프로그램 작성  (0) 2018.12.21
[C++] 구조체  (0) 2018.12.21