c++언어에서는 인라인 함수라는 것을 제공한다. 인라인이라는 의미는 코드 라인 자체가 안으로 들어간다는 뜻. 즉, 함수의 내용을 호출을 통해서 실행시키는 것이 아니라, 호출하는 코드 자체가 함수 내용의 코드가 되는 효과가 된다는 점이다. 바로 이해한 사람도 있겠지만 아닐 수도 있으니, 예를 들자면...
void PrintHello() {
cout << "Hello, World!" << endl;
}
int main() {
PrintHello();
PrintHello();
return 0;
}
와 같은 코드가 다음과 같이 바뀌게 된다는 뜻이다.
int main() {
cout << "Hello, World!" << endl;
cout << "Hello, World!" << endl;
return 0;
}
눈치챘는가? 인라인 함수는 성능 향상을 위한 것이다. 물론 이렇게 바꿈으로써 실행 코드가 늘어날 수 있다는 단점이 있다. 따라서 인라인 함수는 코드는 작지만(1~3줄 정도) 자주 호출되지 않는 경우에 주로 사용하는 것이 좋다.
| 인라인 함수의 장점
인라인함수는 #define 매크로와 기능이 유사하지만, 인라인 함수만의 장점이 있다.
1. 인라인 함수의 전달인자에 데이터형을 체크할 수 있다.
(매크로 기능을 활용할 경우에는 파라미터와 리턴값의 데이터 타입을 정확히 '명시'할 수 없게 된다.)
2. 매크로가 갖는 부작용 없이 일반 함수처럼 사용이 가능하다.
(매크로를 사용시에 increment등으로 변수를 넘겨줄 경우 일반적으로 함수를 사용할 때와는 다른 값을 얻게 되는 경우가 많다.)
3. 디버깅이 가능하다. 즉, 현재 변수에 어떤 값이 들어가 있는지 알 수 있다.
| 인라인 함수의 단점
1. 실행 코드가 커진다.
2. 인라인 함수의 구현을 짧게 작성해야 한다. 만약 구현의 내용이 길어진다면 컴파일러는 인라인 함수를 일반 함수로 취급하게 된다.
인라인 함수를 사용함으로써 성능의 향상과 매크로의 부작용을 해결할 수 있다고 하지만, 인라인 함수를 너무 남발하게 되면 실행 코드 자체가 커지게 되는 단점이 있다. 그리고 인라인 함수의 모토는 1~3줄 정도의 짧은 코드를 함수화시킴으로써 효율성의 낭비를 막고자 함이었는데, 코드가 5줄 이상이 되어버린다면 굳이 인라인 함수를 사용할 이유가 없다.
'컴퓨터 프로그래밍' 카테고리의 다른 글
git commit 메세지를 sublime text로 저장하는 방법 (0) | 2015.08.12 |
---|---|
const 멤버함수와 const 객체 (3) | 2015.07.28 |
overflow flag와 carry flag의 비교 (2) | 2015.06.17 |
C# List<T> Insert vs Add (0) | 2015.03.23 |
switch문과 if문의 성능 비교 (ISA 관점에서) (4) | 2015.03.12 |