본문 바로가기

Loki::SmallObject

Improved Angra boost::pool, Loki::SmallObject와 같은 메모리풀은 4 바이트 미만의 데이터에 대해서도 메모리 할당을 할 수 있다. 특히, boost::pool의 SSS(Simple Segregated Storage)는 4 바이트 미만 단위의 메모리풀을 구성하더라도 독특한 메모리 정렬 기법을 사용하기 때문에 성능상의 손실이 그다지 크지 않지만, Loki::SmallObject는 성능 손실이 매우 크다. 과연 4 바이트 미만의 메모리 할당 능력이 다른 모든 것을 희생해야 할 만큼 중요한 것일까? Alexandrescu가 지적했던 것처럼, 최근의 프로그래밍 기법들이 작은 크기의 개체를 적극 활용하고 있다. 그러나, 사실 4 바이트 미만의 데이터를 다룰 일은 거의 없다. 이것은 4 바이트 미만의 데이터로.. 더보기
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)라는 메커니즘을 바탕으로, 대량의 순차 할당, 반환 및 무작위 할당, 반환과 같은 .. 더보기