책 정리/Modern C++ Design
5장, 일반화 함수자(함수 객체) - 7. 총평
최익필
2010. 11. 28. 05:24
이 포스트의 목적
- 일반화 함수자(함수 객체)가 멤버 함수 포인터도 처리할 수 있게 만든다.
이 포스트의 준비물
- Firefox 4.0 b7 - 이제 쓸만해 졌다.
참조 서적
- 안드레 알렉산드레스쿠 저. Modern C++ Design. 이기형 역.
Addiston-Wesley. 인포북. 초판 2003.07.30. page(205 ~ 218)
내용
이 밖에도, 바인딩, 함수 체이닝(체인화), 성능 개선 이슈가 있다.
- 바인딩 이슈
함수자를 만들 때, 함수의 인자 갯수를 미리 설정하는 기술
또는 함수자를 만들 때, 함수자의 인자 갯수를 줄이는 기술
link : boost::bind, boost::function
- 함수 체이닝(체인화) 이슈
여러 함수들을 순차적으로 호출해 주는 하나의 함수로 만드는 기술
link : boost::signal, boost::signal2
- 성능 개선 이슈
모던에서 정의한 function_object 의 경우, new 를 이용해 구현하고 있어, 복사 비용 문제가 있고, 클래스 포장자가 많아 짐에 따라, 인수 전달시 많은 복사 비용을 물어야 하므로, 성능을 개선시킬 필요가 있다.
new 가 사용되는 부분은 메모리 풀을 이용하면 되고, 인수 전달은 const & 나 & 로 대체하면 된다.
개인적인 생각
- 직접 만드는 고통보다는 boost 에서 찾아서 쓰길 권한다. 뭐, 때론 그 고통이 좋은 것일 수도 있으니, 판단은 스스로...
여담
- 다 정리 해야 하나, 포기! 바인딩 쪽과 함수 체이닝은 개념만 이해하고 넘겨야 겠다.