항목 33. 인라인을 선별적으로 사용하라.
우선 인라인 함수란?
http://janine.egloos.com/1330489
http://blog.naver.com/phoogu?Redirect=Log&logNo=110017171831
트랙백도 추가해 주는 센스!
이유
1. 코드의 크기가 증가되어, 실행파일의 크기가 크게 된다.
- 이 때문에 실행시 많은 작업을 하게 된다.
2. 명령어 캐시의 적중률을 감소시켜 캐시 메모리에서 메인 메모리로의 명령어 페치 속도를 떨어뜨린다.
- 명령어 캐쉬란? CPU에 보면 L1 캐쉬 L2 캐쉬 등이 있는데, 여기에 이 명령어들이 올라간다. 그리고 명령어를 기억해두었다가 같은 명령어가 들어오면 바로 수행하게 되지만, ... 인라인의 남용으로 계속 이 명령어 캐쉬가 바뀌므로써 페치속도가 떨어지게 된다는 뜻이다..(물론 이 생각은 나의 추측이다. 내부적으로 어떤 아키텍쳐가 있을지는 모르겠다)
3. 인라인 함수가 아주 작다면, 함수 본체로 인해 만들어지는 코드의 크기가 함수 호출로 인한 코드의 크기보다 적을수 있어, 오히려 적중률을 높이고 더 빠르게 작동하게 된다.
4. 디버깅이 어렵다
- 왜냐하면 브레이크 포인트를 설정할수 없다.. ..... 이게 제일 중요하다.. .. 브레이크 포인트를 걸수 없다!
해결 방법
1. 아주 간단한것들만 인라인으로 처리 해라.
2. 생성자와 소멸자는 인라인을 피해라.
개인적인 생각
어렸을 때 선생님은 말씀하셨다.
"모르면 입이라도 다물어 중간이라도 간다" 그런 함수가 인라인 함수이다.
어느정도 실력이 쌓여있을 때 인라인 함수에 대해서 사용한다면, 정말 귀중항 도구가 될수 있을것이다.
우선 인라인 함수란?
http://janine.egloos.com/1330489
http://blog.naver.com/phoogu?Redirect=Log&logNo=110017171831
트랙백도 추가해 주는 센스!
이유
1. 코드의 크기가 증가되어, 실행파일의 크기가 크게 된다.
- 이 때문에 실행시 많은 작업을 하게 된다.
2. 명령어 캐시의 적중률을 감소시켜 캐시 메모리에서 메인 메모리로의 명령어 페치 속도를 떨어뜨린다.
- 명령어 캐쉬란? CPU에 보면 L1 캐쉬 L2 캐쉬 등이 있는데, 여기에 이 명령어들이 올라간다. 그리고 명령어를 기억해두었다가 같은 명령어가 들어오면 바로 수행하게 되지만, ... 인라인의 남용으로 계속 이 명령어 캐쉬가 바뀌므로써 페치속도가 떨어지게 된다는 뜻이다..(물론 이 생각은 나의 추측이다. 내부적으로 어떤 아키텍쳐가 있을지는 모르겠다)
3. 인라인 함수가 아주 작다면, 함수 본체로 인해 만들어지는 코드의 크기가 함수 호출로 인한 코드의 크기보다 적을수 있어, 오히려 적중률을 높이고 더 빠르게 작동하게 된다.
4. 디버깅이 어렵다
- 왜냐하면 브레이크 포인트를 설정할수 없다.. ..... 이게 제일 중요하다.. .. 브레이크 포인트를 걸수 없다!
해결 방법
1. 아주 간단한것들만 인라인으로 처리 해라.
2. 생성자와 소멸자는 인라인을 피해라.
개인적인 생각
어렸을 때 선생님은 말씀하셨다.
"모르면 입이라도 다물어 중간이라도 간다" 그런 함수가 인라인 함수이다.
어느정도 실력이 쌓여있을 때 인라인 함수에 대해서 사용한다면, 정말 귀중항 도구가 될수 있을것이다.
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
항목 37. 계승된 비가상 함수를 재정의하지 않도록 한다. (2) | 2008.05.12 |
---|---|
항목 36. 인터페이스 계승과 구현의 차이점을 이해해라 (0) | 2008.05.12 |
항목 35. public 계승이 isa를 모델링하도록 하라. (0) | 2008.05.11 |
인스턴스와 객체지향 설계 (0) | 2008.05.11 |
34. 파일간의 컴파일 의존성을 최소화 하라 (0) | 2008.05.11 |
항목 32. 변수 정의는 가능한 뒤로 늦춰라 (0) | 2008.05.10 |
항목 31. 지역 객체에 대한 참조나 함수 내에서 new를 이용해 초기화된 포인터를 가리키는 참조를 리턴하지 말라 (0) | 2008.05.10 |
항목 30. 접근하기 어려운 멤버에 대한 비상수 포인터나 레퍼런스를 리턴하는 멤버 함수 사용을 피해라 (0) | 2008.05.10 |
항목 29. 내부 데이터에 대한 "핸들"을 리턴하는 것을 피해라 (0) | 2008.05.10 |
클래스와 함수 : 구현 (0) | 2008.05.10 |
최근댓글