인라인 함수란,
짧은 코드로 구성된 함수에 대해, 함수 호출 오버헤드로 인한 프로그램의 실행 속도 저하를 막기 위해 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 |