반응형
매크로 함수는 실행속도가 빠르지만 간단한 함수도 정의하기가 힘들다.
c++에서의 inline 함수는 일반 함수처럼 만들고 매크로 함수처럼 대체하는 기능이 있다.
두 변수 중 큰 값을 return하는 함수는 보통 아래처럼 만든다.
int max(int a, int b)
{
return (a > b) ? a : b;
}
위 함수를 매크로 함수로 만들면 아래와 같다.
#define MAX_VALUE(A, B) (((A) > (B)) ? (A) : (B))
아주 간단한 함수지만, 괄호가 많아지기 때문에 벌써부터 복잡해진다.
하지만 inline 키워드를 이용하면 훨씬 간단하다.
inline int max_value(int a, int b)
{
return (a > b) ? a : b;
}
inline 함수는 함수에 inline 키워드만 선언하면 되므로 매크로 함수보다 만들기가 쉽다.
매크로 함수는 전처리기에 의해 처리되지만, inline 함수는 컴파일러에 의해서 처리된다.
따라서 모든 함수에 inline 키워드를 추가해도 속도 향상을 기대할 수 없다.
컴파일러가 성능이 떨어진다고 판단할 경우, 키워드를 무시한다.
반대로 성능 개선에 필요한 경우는 임의로 키워드를 추가하기도 한다.
위와 같은 간단한 함수에 inline 키워드를 선언해도 Visual Studio에서 속도가 개선되지 않을 수 있다.
이 경우는 아래와 같이 먼저 최적화 설정을 변경해야 한다.
Visual Studio → 솔루션 탐색기에서 마우스 오른쪽 버튼을 클릭한 후 속성으로 들어가보자.
구성 속성에서 C/C++ → 최적화를 클릭한 후 인라인 함수 확장에서 __inline만 확장을 선택한다.
설정이 완료되었으면 일반 함수 / 매크로 함수 / inline 함수의 속도를 비교해보자.
실행 결과는 링크를 참고하면 된다.
반응형
'개발 > C, C++' 카테고리의 다른 글
구조체의 크기 (0) | 2021.06.19 |
---|---|
C++ - 컨테이너와 반복자 (Container and Iterator) (0) | 2021.06.11 |
단락 평가 Short Circuit (0) | 2021.05.11 |
C++ split 함수 구현 (0) | 2021.05.08 |
typedef 선언 (0) | 2021.05.02 |
댓글