2012년 8월 9일 목요일

stl:hash_map 과 CAtlMap 의 성능 비교..

몇몇 글중에 stl:hash_map 과 CAtlMap의 성능 비교를 보인 블로그를 보았다.

의구심이 들어 삽입 연산을 위주로 코드를 visual studio 2008 에서 성능 테스트를 해보았다.

삽입데이터 양은 

const int MAXCOUNT  = 1000000;

일단 첫번째 타입은 Key=int , Value=int
STL : hash_map<int, int>
MFC : CAtlMap<int, int>

STL : 343 clock
MFC : 63 clock

말 그대로 성능이 차이가 많이 났다.. 하지만 여러가지 글을 보다 MS 에서 만든 stl:hash_map 은 키가 int 타입일때에도 hash function 을 쓴다는 말을 들었다.. 그래서 키타입을 바꿔서 다시 테스트 해보았다.

일단 첫번째 타입은 Key=LPCTSTR , Value=LPCTSTR
STL : hash_map<LPCTSTR, LPCTSTR>
MFC : CAtlMap<LPCTSTR, LPCTSTR>

STL : 2218 clock
MFC : 2156 clock

위 결과를 보면 대세의 영향을 미칠정도의 차이는 아닌거 같다... 성능의 이슈는 키가 int 타입일때 나오는것 같다.
gcc 에서 만든 stl:hash_map 은 키가 int 타입일때에는 인덱스 형식으로 처리를 한다고 하는데 왜 마소만 ㅡㅡ..

새로 나올 visual studio 2010 에서는 개선이 될건지.. 쩝...

댓글 없음: