C#이나 Java와 다르게 C++(물론 C)은 동적 메모리 할당과 해제에 신경을 써야 합니다. 그리고 높은 성능까지 원한다면 메모리 관리자를 직접 만들어서 동적 할당과 해제를 직접 관리하여 실시간으로 동적 할당이 일어나지 않도록 해야 합니다.

 

그러나 범용적인 목적을 가지 메모리 관리자는 만들기가 쉽지 않고 특히 멀티 스레드 환경에서 사용해야 하는 경우는 잘못하면 오히려 더 느려질 수 있습니다.

 

현재 Windows에서는 LFH를 사용하여 이전보다 동적 할당과 해제에 대한 성능을 개선했습니다. 그러나 이것보다 더 성능을 좋게 하는 방법이 있습니다.

그것은 VC++10에서 추가된 라이브러리인 Concurrency Runtime에서 제공하는 메모리 관리자를 사용하는 것입니다.

메모리 할당을 할 때는 Concurrency::Alloc, 메모리 해제를 할 때는 Concurrency::Free 를 사용합니다.

 

MSDN에 있는 샘플 중 new/delete, malloc/free와 비교한 것을 보면 new/delete에 비해서는 3배 정도 성능이 좋습니다.

http://msdn.microsoft.com/en-us/library/dd998050.aspx

 

 

저작자 표시
신고
by 흥배 2013.01.29 22:03
| 1 |

티스토리 툴바