TCMalloc
TCMalloc은 (Thread - Caching Memory Allocation) 의 약자로 구글에서 만든 메모리 할당 라이브러리 이다.
중앙메모리 관리자와 스레드별 메모리 관리자를 구분하여 32K이하의 작은 크기인경우에 메모리 할당/해제 요청은 스레드별 메모리 관리자가, 부족할 경우 중앙 메모리 관리자에서 얻어오는 형태를 띄고 있다. 메모리 할당시 불필요한 동기화 과정이 거의 없으므로 보다 좋은 성능향상을 얻을 수 있다.
TCMalloc에 문서에서는 32k 이하의 작은 크기인 경우에 대한 메모리의 할당 해제가 ptmalloc2보다 약 6배 빠르다고 하고 있다. 사용법은 매우 간단하다.
아래 사이트에서 최신 버전에 구글 퍼포먼스툴을 다운받고
https://code.google.com/p/gperftools/downloads/detail?name=gperftools-2.0.zip
프로젝트 빌드를 한뒤 생성되는 라이브러리를 사용하려는 해당 프로젝트에 링크 시켜주면 끝이다.
아래는 사용법에 관한 원문
또한 구글 퍼포먼스 툴에서는 Heap Checker, Heap Profiler, CPU Profiler의 TCMalloc 이외에도 메모리 누수 디버깅, 프로파일링에 좋은 툴들을 제공하고 있다. 레퍼런스도 많이 존재하며 임베디드 및 iOS도 지원해서 보편적으로 사용중에 있다.
NedMalloc
Ogre3D에 새로운 메모리 할당자로 채택 된 NedMalloc은 Hoard, ptmalloc2 보다 빠르다고 한다. c++ 코드로 이루어져있으며 윈도우에 최적화 되어 있다. 파일도 3개만 추가하면 되므로 프로젝트에 적용하기 용이하다..
http://www.nedprod.com/programs/portable/nedmalloc/
홈페이지에서 말하는건.. tcmalloc은 서버프로세스에서 사용하는것이 좋음
JEMalloc
JEMalloc은 (Jason Evans)가 만들어서 JEMalloc이라 부르며 현재 페이스 북, 파이어폭스에서 사용하고 있는 메모리 할당 라이브러리이다. http://www.canonware.com/jemalloc/download.html
위에 나와있는 도표 중 jemalloc이 가장 좋은 성능을 보이고 있지만, tcmalloc과의 큰 차이를 보이고 있진 않다. Jason Evans도 실코어 8개 이상 컴퓨터에서는 jemalloc이 더 좋은 성능을 보인다고 이야기 해보았을때 아직까지는 두 개의 성능이 크게 차이 나지는 않는 듯 하다.. 스택 오버플로우에 한 답변에는 아래와 같은 이야기가 있다..
tcmalloc은 메모리 풀을 사용하는 등의 정적인 스레드일 경우 효과적이며 jemalloc은 스레드를 생성하거나 파기할때의 효과적이다.
두개 다 프로젝트에서 사용해보고 더 나은 것을 찾는게 제일 낫지 싶다.
그 외 조사해볼 라이브러리 - LKMalloc, HOARD, PTMalloc3, OpenBSD 등등.. [출처] tcmalloc, jemalloc 그리고 nedmalloc|작성자 풍풍풍 |
'프로그래밍(Programming) > Library' 카테고리의 다른 글
FreeType 라이브러리 & D3D (0) | 2013.08.24 |
---|---|
정점캐시 최적화 도구 edge library? 어디있는거지 (0) | 2013.05.27 |
RHASH 해쉬키를 만들어주는 라이브러리 (0) | 2013.05.23 |
압축 라이브러리 - Zlib, CGZip, LiteZip, Zip Utils, Minizip (0) | 2013.05.18 |
Loki 라이브러리 (0) | 2013.05.11 |