기존에 작업 하던 것을 다시 갈아 엎고 구조를 다시 잡아 작업을 하고 있습니다. 그래서 이쪽 카테고리 글 포스팅 하기가 힘드네요.

새로 구조를 잡으면서 부스트 라이브러리를 사용해보고 있습니다. 풀(pool)을 적용해보려고 합니다. 밑은 boost pool에 대해 구글링 하면서 참고해 만든 매크로입니다.

#define ImplementBPool(class) boost::pool<> class::bpool(sizeof(class));
#define DeclareBPool \
void* operator new(size_t s) \
{ \
	return bpool.malloc(); \
} \
void operator delete(void *p) \
{ \
	bpool.free(p); \
} \
private: \
	static boost::pool<> bpool; \

DeclareBPool을 풀링을 사용할 클래스 헤더에 선언하고, ImplementBPool을 cpp 파일에 클래스 이름과 같이 적어주면 부스트를 이용한 풀링이 적용되도록 했죠. 템플릿을 이용할까도 했지만, 어차피 본문에서 클래스 크기를 알려주어야 하기에 그냥 매크르로로 작성 했습니다.

다른 분들은 어떻게 사용하시나요? 부스트 풀 사용기나 좋은 의견 남겨주시면 감사하겠습니다.
  1. BlogIcon 구차니 2010.05.20 23:32 신고

    악! 무슨 내용인가요 ㅠ.ㅠ
    부연설명이 필요해요! ㅠ.ㅠ

    • BlogIcon 친절한티스 2010.05.20 23:58 신고

      보통 new/delete를 쓰면 메모리 단편화와 함께 나중에 가서는 속도 저하까지 생기는데요. boost pool은 그런 문제를 해결해줘요. 테스트 프로젝트 생성해서 클래스 500개 생성/해제해서 타임 비교해보니 2배이상 차이나더군요.

    • BlogIcon 구차니 2010.05.21 09:42 신고

      저야 빈번하게 malloc / free 할일이 없지만 게임에서 처럼 소규모로 빈도가 높게 한다면 효용이 좋겠군요!

  2. BlogIcon 무바㏇ 2010.05.23 08:53 신고

    헛 구차니님이다.! 댓글 타고 들어왔어요~. 모두 열심이시군요~

+ Recent posts