항목 33. 인라인을 선별적으로 사용하라.

우선 인라인 함수란?
http://janine.egloos.com/1330489
http://blog.naver.com/phoogu?Redirect=Log&logNo=110017171831

트랙백도 추가해 주는 센스!

이유
1. 코드의 크기가 증가되어, 실행파일의 크기가 크게 된다.
- 이 때문에 실행시 많은 작업을 하게 된다.

2. 명령어 캐시의 적중률을 감소시켜 캐시 메모리에서 메인 메모리로의 명령어 페치 속도를 떨어뜨린다.
- 명령어 캐쉬란? CPU에 보면 L1 캐쉬 L2 캐쉬 등이 있는데, 여기에 이 명령어들이 올라간다. 그리고 명령어를 기억해두었다가 같은 명령어가 들어오면 바로 수행하게 되지만, ... 인라인의 남용으로 계속 이 명령어 캐쉬가 바뀌므로써 페치속도가 떨어지게 된다는 뜻이다..(물론 이 생각은 나의 추측이다. 내부적으로 어떤 아키텍쳐가 있을지는 모르겠다)

3. 인라인 함수가 아주 작다면, 함수 본체로 인해 만들어지는 코드의 크기가 함수 호출로 인한 코드의 크기보다 적을수 있어, 오히려 적중률을 높이고 더 빠르게 작동하게 된다.

4. 디버깅이 어렵다
- 왜냐하면 브레이크 포인트를 설정할수 없다.. ..... 이게 제일 중요하다.. .. 브레이크 포인트를 걸수 없다!

해결 방법
1. 아주 간단한것들만 인라인으로 처리 해라.
2. 생성자와 소멸자는 인라인을 피해라.


개인적인 생각
어렸을 때 선생님은 말씀하셨다.
"모르면 입이라도 다물어 중간이라도 간다" 그런 함수가 인라인 함수이다.

어느정도 실력이 쌓여있을 때 인라인 함수에 대해서 사용한다면, 정말 귀중항 도구가 될수 있을것이다.





posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요