본문 바로가기

Memory Pool

C++ Memory Pools and Angra 윈도우 7의 LFH(Low Fragmented Heap)의 성능은 매우 좋은 편에 속한다. 개발 플랫폼을 윈도우 7으로 한정한다면, 기본 메모리 할당기만 써도 성능에 손해보는 일은 없을 것이다. 그러나, 플랫폼에서 LFH와 같은 쓸만한 힙 매니저를 제공하지 않는다면, 효과적으로 메모리를 관리하기 위해 잘 구현된 메모리 할당기가 필요하다. 대표적으로, boost, ACE, Loki는 간단하게 쓸 수 있는 메모리풀을 제공한다. 먼저, boost::singleton_pool은 부스트 풀 라이브러리(boost pool library)에 기반한 싱글턴 타입의 메모리 할당기이다. SSS(Simple Segregated Storage)라는 메커니즘을 바탕으로, 대량의 순차 할당, 반환 및 무작위 할당, 반환과 같은 .. 더보기
메모리 풀 형식의 할당기 제작 C++에서 기본으로 제공하는 힙 할당자인 new와 delete는 그 성능이 시원치 않다. 일반적인 경우, 운영체제에서 힙에 대해서 메모리 풀을 구현하고 있기 때문에 일정 크기 이하에 대해서는 크게 체감할 수 있는 부분은 아니지만, 이렇게 제공되는 메모리 풀은 일반적인 목적에 맞춰 제작된 풀이므로, 그렇게 성능이 처지는 것도, 그렇게 성능이 좋은 것도 아니다. 물론, 이것은 new와 delete 자체가 조악하다는 것이 아니라, 만들고자 하는 프로그램에서 요청되는 메모리 할당 / 해제 유형에 new와 delete가 잘 맞지 않을 수도 있다는 뜻이다. 따라서, 프로그램의 메모리 요청 유형에 적합한 할당기를 만들 필요성이 있는데.. 할당은 어떻게 하더라도 사실 그렇게까지 차이가 나지 않는 것 같은데, 문제는 메.. 더보기